1#include <stdlib.h> 2#include <string.h> 3 4char *strndup(const char *s, size_t n) 5{ 6 size_t l = strnlen(s, n); 7 char *d = malloc(l+1); 8 if (!d) return NULL; 9 memcpy(d, s, l); 10 d[l] = 0; 11 return d; 12} 13