#include<stdio.h>
#include<string.h>
int main()
{
char source[]="Sayonara";
char target[8];
strcpy(target,source);
printf("source string= %s\n",source);
printf("target string= %s\n",target);
return 0;
}
输出: - 源字符串=
目标字符串= Sayonara
答案 0 :(得分:5)
source
的长度为9,因为它具有空终止符\0
。您正在复制超出target
的范围,该范围调用未定义的行为。
您需要使target
长度相同或更长,以确保它在复制后以空值终止,并且不会发生越界访问。
char source[]="Sayonara";
char target[9];
strcpy(target,source);
答案 1 :(得分:3)
将source
复制到target
后,target
不会终止。由于strcpy
复制到第一个空字符('\0'
),它将继续复制到数组target
的末尾,因为它的长度比source
短一个阵列。这将调用未定义的行为。
char target[8];
到
char target[9];