Monday, 25 September 2017

c - strcpy() return value



A lot of the functions from the standard C library, especially the ones for string manipulation, and most notably strcpy(), share the following prototype:



char *the_function (char *destination, ...)


The return value of these functions is in fact the same as the provided destination. 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.



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:



printf("%s\n", strcpy(dst, src));


Are there any other sensible reasons to justify this idiom?


Answer



as Evan pointed out, it is possible to do something like



char* s = strcpy(malloc(10), "test");


e.g. assign malloc()ed memory a value, without using helper variable.



(this example isn't the best one, it will crash on out of memory conditions, but the idea is obvious)


No comments:

Post a Comment

casting - Why wasn't Tobey Maguire in The Amazing Spider-Man? - Movies & TV

In the Spider-Man franchise, Tobey Maguire is an outstanding performer as a Spider-Man and also reprised his role in the sequels Spider-Man...