#include #include #include "Strn.h" /* * Concatenate src on the end of dst. The resulting string will have at most * n-1 characters, not counting the NUL terminator which is always appended * unlike strncat. The other big difference is that strncpy uses n as the * max number of characters _appended_, while this routine uses n to limit * the overall length of dst. * * This routine also differs in that it returns a pointer to the end * of the buffer, instead of strncat which returns a pointer to the start. */ char * Strnpcat(char *const dst, const char *const src, size_t n) { register size_t i; register char *d; register const char *s; register char c; char *ret; if (n != 0 && ((i = strlen(dst)) < (n - 1))) { d = dst + i; s = src; /* If they specified a maximum of n characters, use n - 1 chars to * hold the copy, and the last character in the array as a NUL. * This is the difference between the regular strncpy routine. * strncpy doesn't guarantee that your new string will have a * NUL terminator, but this routine does. */ for (++i; i