strlcpy() 函数

时间:2021-06-04 11:09:17

size_t strlcpy(char *dst, const char *src, size_t siz)

{

   char *d = dst;

const char *s = src;

size_t n = siz;

/* Copy as many bytes as will fit */

if (n != 0)

{

while (--n != 0)

     {

       if ((*d++ = *s++) == '\0')

        break;

}

}

/* Not enough room in dst, add NUL and traverse rest of src */

    if (n == 0)

{

if (siz != 0)

*d = '\0';

/* NUL-terminate dst */

while (*s++)

;

}

return(s - src - 1); /* count does not include NUL */

}