这是怎么回事? 代码如下:
#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”,预期输出如下:
Hello! name
You said: yes
相反,我得到:
Hello! es
You said: yes
我还尝试在 %s 之前添加空格,但没有结果。
那么我到底错过了什么?
最佳答案
answ
只能包含 1 个字符。因此,目前,额外的字符 "es"
+ '\0'
被写入分配给 name_
的内存中。
因此,"es"
被打印。
关于c - scanf 和 printf 不打印正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58207289/