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

strcpy与strncpy函数的区别及其C语言实现过程

2018-03-05 14:31 579 查看

strcpy :

从源串的开始到结尾('\0')完全拷贝到目标串地址,当src串长度大于dest串长度时,程序仍会将整个src串复制到dest区域,可是dest数组已发生溢出.(使用时需注意)


strncpy :

src串的开始拷贝n个字符到dest串地址,n大于src串长度时,遇到'\0'结束; n小于src串长度时,到第n个字符结束,但不会在dest串尾补'\0'.


strcpy函数的实现

#include<assert.h>
char *my_strcpy(char *dest, const char *src)
{
char *ret = dest;
assert(dest != NULL);
assert(src != NULL);

while ((*dest++ = *src++) != '\0')
{
;
}
return ret ;
}
int main()
{
char dest[] = "hehehehehe";//注意
char src[] = "hello";
my_strcpy(dest, src);
printf("%s\n", dest);
return 0;
}




strncpy函数的实现

#include<stdio.h>
#include<assert.h>

char *my_strncpy(char *dest, const char *src, int count)
{
assert(dest != NULL);
assert(src != NULL);
char *ret = dest;

while (count)
{
if((*dest++ = *src++) != '\0')
{
count--;
}
}
return  ret;
}
int main()
{
char dest[20] = "0";//注意
char src[] = "helloworld";
int n = 5;
my_strncpy(dest, src, n);
printf("%s\n", dest);
return 0;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息