title: strcpy() return value
body: <p>A lot of the functions from the standard C library, especially the ones for string manipulation, and most notably strcpy(), share the following prototype:</p>
  
  <pre><code>char *the_function (char *destination, ...)
  </code></pre>
  
  <p>The return value of these functions is in fact the same as the provided <code>destination</code>. Why would you waste the return value for something redundant? It makes more sense for such a function to be void or return something useful.</p>
  
  <p>My only guess as to why this is is that it's easier and more convenient to nest the function call in another expression, for example:</p>
  
  <pre><code>printf("%s\n", strcpy(dst, src));
  </code></pre>
  
  <p>Are there any other sensible reasons to justify this idiom?</p>