对于以下代码:(假设已定义 x)
scanf("%d\n", &x);
printf("foo");
如果我按 1 和 ENTER,我希望程序打印 foo,但事实并非如此。我必须按 1、ENTER、2、ENTER 才能看到它打印 foo。
现在的问题是为什么我需要输入一些东西加上另一个 ENTER 才能使 scanf 返回?不可能 scanf 只需要比格式字符串中的 ENTER 多一个,因为按 1、ENTER、ENTER 也不起作用。事实上,无论我输入多少 ENTER,scanf 都会一直等待,直到我输入其他内容。
我已经在 Visual Studio 2010 和 MinGW 中尝试过这个示例,它们产生了相同的结果。那么这该如何解释呢?这是特定于 Windows 的吗?或编译器依赖?或者只是这种 scanf 的使用会产生未定义的行为?