在C语言中,字符串复制函数有strcpy和strncpy,那么这两个函数有什么区别呢,下面将详细介绍。
1. strcpy函数: 字符串复制函数。格式:char *strcpy(char *str1,char *str2); 功能将str2指向的字符串连同字符串结束符完全复制到str1中。
说明:char *str2 是字符串的起始地址,可以是字符串常量,字符数组名或者字符指针,str1只能是字符数组名或一级字符指针,两个字符串所指内存区域不可以重叠。
strcpy(str1,"hello world");
strcpy(str2,str1);
str1="hello world"; 注意这是不允许。
strcpy要求str1有足够的内存空间,否则在复制字符串str2时会溢出,越界。
2.strncpy函数:用于复制字符串的n个字符。格式 char *strncpy(char *str1,char *str2,n); 功能是将源字符串指针str2的前n个字符复制到目标字符串指针str1中。
说明:strncpy不像strcpy那样将字符串结束符‘\0'也复制过去,因此在复制结束之后需要自己添加 str1[n]='\0'; 两个字符串所指内存区域不可以重叠,但是必须有足够的
空间存放n个字符。
利用strncpy代替strcpy来防止缓冲区越界。
char str1[8];
strncpy(str1,"abcdefgh",8);
str1将会被 "abcdefgh”填满,但是没有字符串结束符。