以下是我的源代码.读完整数后,程序应该等到我键入一个字符串然后按回车键.但是,只要我输入整数,程序就会退出.你能告诉我我的错吗?
#include#include int main() { int n; char command[255]; scanf("%d", &n); fgets(command, 255, stdin); return 0; }
我提到我也尝试使用gets(command)
,但我得到了相同的结果.
有一个尾随换行符,因为你按下ENTER整数后.通过改变它来吃它:
scanf("%d", &n);
对此:
scanf("%d ", &n); // this will eat trailing newline
正如chux所说,scanf("%d ", &n)
直到用户输入数字并且一些跟随非白空间才会返回.
相关问题:C:多个scanf,当我输入一个scanf的值时,它会跳过第二个scanf
另外我还记得我的例子:用scanf读取char时的注意事项.
另外,正如Marco所说,你可以使用:scanf("%d\n", &n);
,它专门针对换行符.
还有这种可能性:
#include#include int main() { int n; char command[255], newline; scanf("%d", &n); scanf("%c", &newline); // eat trailing newline fgets(command, 255, stdin); return 0; }
但是,我个人会使用两个fgets()
而不是scanf()
.:)