阅读背景:

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

来源:互联网 
strcpy():char *strcpy(char *dest,const char *src),返回值为char *,便于链式访问,参数列表中dest为目                  标字符串,src为源字符串。功能:将源字符串整体拷贝到目标字符串,包括字符串结束符“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”。 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 所指的内存区域不能重叠,



”,注意在                  使用时应该注意dest的空间应该足够放下src。char *strcpy(char *dest,const char *src),



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: