C语言 strncpy函数实现

strncpy()函数属于strcpy()函数的扩展版本,由于strcpy()没有明确的停止条件(strcpy()存在的问题暂不讨论),strncpy()在原来的基础上增加了拷贝字节数长度,下面贴上linux实现方式。

函数定义如下:

char *strncpy(char *dest, const char *src, size_t count);

函数实现如下:

char *Test_strncpy(char *dest, const char *src, size_t count)
{
    char *tmp = dest;

    while (count) {
        if ((*tmp = *src) != 0)
            src++;
        tmp++;
        count--;
    }
    return dest;
}

strncpy与strcpy存在同样的问题问题:
1.没有判断接收字符串与源字符串,如果传入了没有开辟内存的地址很容易造成崩溃。
2.如果src最后一位不是’\0’而是随机数,那么dest里会出现乱码甚至崩溃。
3.如果在数据中间位置出现’\0’会造成函数返回,后面的数据没有接受。

你可能感兴趣的:(C语言,一起学习C语言)