#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;
}
Run Code Online (Sandbox Code Playgroud)
输出: - 源字符串=
目标字符串= Sayonara
长度source为9,因为它具有空终止符\0.您正在复制超出界限target,这会调用未定义的行为.
您需要使target相同的长度或更长,以确保它在复制后以空值终止,并且不会发生越界访问.
char source[]="Sayonara";
char target[9];
strcpy(target,source);
Run Code Online (Sandbox Code Playgroud)