/* * strndup.c */ #include <string.h> #include <stdlib.h> char *strndup(const char *s, size_t n) { int l = n > strlen(s) ? strlen(s) + 1 : n + 1; char *d = malloc(l); if (d) memcpy(d, s, l); d[n] = '\0'; return d; }