strlcpy 是一个类似 strcpy 的字符串拷贝函数,它的目的是保证拷贝过程中缓冲区不会溢出,并且最后缓冲区内是一个有效的C字符串。它的定义如下:
size_t strlcpy(char * dest, const char * src, size_t size);
参数:
char * dest 目标缓冲区
const char * src 原始字符串
size_t size 目标缓冲区长度
返回值:原始字符串长度
以下为函数实现:
size_t strlcpy(char * dest, const char * src, size_t size)
{
char *d = dest;
const char *s = src;
size_t n = size;
if (n != 0) {
while (--n != 0) {
if ((*d++ = *s++) == '\0')
break;
}
}
if (n == 0) {
if (size != 0)
*d = '\0';
while (*s++)
;
}
return(s - src - 1);
}