我有这段代码。
#include <stdio.h>
int main(void)
{
int dogs;
printf("How many dogs do you have?\n");
scanf("%d", &dogs);
printf("So you have %d dog(s)!\n", dogs);
return 0;
}
据我所知,在执行时,程序会说“你有多少只狗”,然后输入一个数字。相反,我得到一个空白页面,我必须先输入一个数字。然后我得到
你有几只狗? 所以你有3只狗! (如果我输入3)我正在使用Eclipse + MinGW,这是我第一次使用C,所以我不确定我有什么/必须设置。
答案 0 :(得分:1)
我设法解决了这个问题。问题是eclipse首先处理所有扫描语句,然后处理所有打印语句。如果您的程序有多个扫描语句,这将很难解决。
修复有点简单。从following link下载二进制修补程序。
然后,您需要将starter.exe粘贴到安装Eclipse的路径中。
就我而言,这是eclipse \ plugins \ org.eclipse.cdt.core.win32.x86_64_5.2.0.201309180223 \ os \ win32 \ x86_64
你的可能会很多。覆盖现有的starter.exe,它应该可以工作。
答案 1 :(得分:0)
printf()
缓冲输出。通常(在UNIX中)stdlib足够聪明,可以在阅读stdout
之前刷新stdin
,但在MingW中可能不是这种情况。考虑使用fflush()
或输出到stderr。