3 ms·
#define strncat(a, b, maxlen) snprintf(a + strlen(a), maxlen - strlen(a), "%s", b)
by dmitrygr 8y ago
#define strncat(a, b, maxlen) snprintf(a + strlen(a), maxlen - strlen(a), "%s", b)
- kazinator 8y agoToo many evaluations of a. If you have snprintf, you probably have inline functions. One day someone will do something like strncat(a += previous_delta, ...).
- dmitrygr 8y agoOPTION 1 (c): char* mystrncat(char *a, const char *b, size_t maxlen){ snprintf(a + strlen(a), maxlen - strlen(a), "%s", b); return a; } OPTION 2 (gccism): #define strncat(_a, b, maxlen) ({char* a = _a; snprintf(a + strlen(a), maxlen - strlen(a), "%s", b); _a;})