On Mon, 2 Dec 2002, Francois Gouget wrote: > Other observations: > * my naive strcpy/strcat implementation seems more efficient than the > one in the glibc! That's pretty weird.
If you have glibc from binary package compiled with optimizations for other processor that you have, it is possible. > * cpycat is much more efficient in this type of scenario. That's not > very surprising of course. Why does the C library have such braindead > functions as strcpy and strcat? Since we are talking about catenating strings only (no %d and family), then I would suggest combining speed of cpycat (in glibc there's stpcpy) and ease of use of sprintf and use something like that: #include <stdarg.h> char *strpcpymore(char *buf, ...) { const char *p; va_list ap; va_start(ap, buf); while ((p = va_arg(ap, const char *))) buf = stpcpy(buf, p); va_end(ap); return buf; } Then we could write: strpcpymore(buffer, "path", "/", "file", ".", "ext", NULL); And make everybody happy. Michal Miroslaw