我不明白为什么这段代码不能正常工作:
#include<stdio.h>
int main()
{
char string [100];
int a;
printf(">");
scanf("%d", &a);
printf(">");
gets(string);
printf("%s\n", string);
}
这是我必须构建但我不能构建的程序的一小部分 理解为什么在通过 scanf() 函数获取值后, 程序只是跳过或没有正确读取 gets() 的字符串 功能。如果您将代码复制到编译器中并尝试运行,您将 明白我的意思。
最佳答案
%d
说明符不会吃掉换行符(或其他空白)。试试这个:
scanf("%d ", &a);
^
那个空格使 scanf
丢弃所有的空白,直到一个非空白。顺便说一下,您的问题与此非常相似 C FAQ .
- 不要使用
gets
,它太糟糕了,甚至不再使用该语言。 使用fgets
代替 - 不要相信任何为您的问题建议
fflush(stdin)
的人
关于c - C语言获取int后获取用户字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10820217/