1 /* 2 * strndup.c 3 */ 4 5 #include <string.h> 6 #include <stdlib.h> 7 8 char *strndup(const char *s, size_t n) 9 { 10 int l = n > strlen(s) ? strlen(s) + 1 : n + 1; 11 char *d = malloc(l); 12 13 if (d) 14 memcpy(d, s, l); 15 d[n] = '\0'; 16 return d; 17 } 18