strcpy 和strcnpy函数——字符串复制函数
其一般形式为
strcpy (字符数组1,字符串2);
strcpy是STRingCoPY(字符串复制)的简写。它表示“字符串复制函数”,作用是将字符串2复制到字符数组1中去。例如:
char str [ 10 ] , str [ ] = "China";
strcpy ( str1 , str2 );
执行后,str1的状态如下:
'C' , 'h' , 'i' , 'n' , 'a' , '\0' , '\0' , '\0' , '\0' , '\0'
说明:
(1)字符数组1必须定义得足够大,以便容纳被复制的字符串2.字符数组1的长度不应小于字符串2的长度。
(2)“字符数组1”必须写成数组名形式(如str1),“字符串2”可以是字符数组名,也可以是一个字符串常量。例如:
strcpy ( str1 , "China" );
作用与前面相同。
(3)如果下复制前未对str1数组初始化或赋值,则str1各字节中的内容是无法预知的,复制时将str2中的字符串和其后的'\0'一起复制到字符数组1中,取代字符数组1中的前面6个字符,最后4个字符不一定是'\0',而是str1中原有的最后4个字节的内容。
(4)不能用赋值语句将第一个字符串常量或字符数组直接给一个字符数组。如下面两行都是不合法的:
str1 = "China";
str1 = str1;
只能用strcpy函数将一个字符串复制到里一个字符数组护送去。用赋值语句只能讲一个字符赋给一个字符型变量或字符数组元素。如下面的语句是合法的:
char a [ 5 ] , c1 , c2;
c1 = 'A';
c2 = 'B';
a [ 0 ] = 'C'; a [ 1 ] = 'h'; a [ 2 ] = 'i'; a [ 3 ] = 'n'; a [ 4 ] = 'a';
(5)可以用strnpy函数将字符串2中前面n个字符复制到字符数组1中去。例如:
strcnpy ( str1 , str2 , 2);
作用是将str2中最前面2个字符复制到str1中,取代str1中原有的最前面2个字符。但是复制的字符个数n应不多于str2中原有的字符(不包括'\0')。