这里发生了什么?代码如下:
#include<stdio.h>
#include<string.h>
int main()
{
char name[15];
char name_[15];
char answ[1];
printf("What's your name?\n");
scanf("%s", name);
strcpy(name_, name);
printf("Yes / No: ");
scanf("%s", answ);
printf("Hello! %s\n", name_);
printf("You said: %s\n", answ);
return 0;
}
[输入为“ name”和“ yes”,预期的输出是:
你好!名称
您说:是
相反,我得到:
你好! ES
您说:是
我也尝试在%s之前添加空格,但没有结果。
那么我到底在这里想念什么?
answ只能包含1个字符。因此,当前,多余的字符“ es” +换行符被写入分配给name_的内存中。因此,“ es”被打印出来。