我坚持遵循c编程,没有低估输出

Har*_*mar 0 c

#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

jua*_*nza 5

长度source为9,因为它具有空终止符\0.您正在复制超出界限target,这会调用未定义的行为.

您需要使target相同的长度或更长,以确保它在复制后以空值终止,并且不会发生越界访问.

char source[]="Sayonara";
char target[9];
strcpy(target,source);
Run Code Online (Sandbox Code Playgroud)