您的位置:首页 > 编程语言

strcpy和strncpy的代码实现和区别以及安全性

2016-08-19 09:58 260 查看

1 函数功能和区别说明

strcpy():char *strcpy(char *dest,const char *src),返回值为char *,便于链式访问,参数列表中dest为目                  标字符串,src为源字符串。功能:将源字符串整体拷贝到目标字符串,包括字符串结束符“\0”,注意在
                 使用时应该注意dest的空间应该足够放下src。
strncpy():char *strncpy(char *dest,const char *src,int count),与strcpy()不同的地方就是多了参数                   count,count为字符串src拷贝到字符串dest的字符个数,如果count给的数值大于src的长度,会在
                    标字符串相应位置补上“\0”。

2 代码实现

strcpy()
char * my_strcpy(char * dest, const char * src)
{
assert(dest);
assert(src);
char * temp = dest;
while (*dest++ = *src++)
{
;
}
return temp;
}
strncpy()
char * my_strncpy(char * dest, const char * src,int count)
{
assert(dest);
assert(src);
char * temp = dest;
while (count--&&(*dest++ = *src++))
{
;
}
if(count>0)
{
while (count--)
{
*dest++ = '\0';
}
}
return temp;
}

3 安全性

    在安全性方面,显然strncpy要比strcpy安全得多,strcpy无法控制拷贝的长度,不小心就会出现dest的大小无法容纳src的情况,就会出现越界的问题,程序就会崩溃。而strncpy就控制了拷贝的字符数避免了这类问题,但是要注意的是dest依然要注意要有足够的空间存放src,而且src 和 dest 所指的内存区域不能重叠,
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  strcpy c语言