扫描在打印前执行的语句

时间:2013-10-09 22:12:56

标签: c eclipse printf scanf

我有这段代码。

#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,所以我不确定我有什么/必须设置。

2 个答案:

答案 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。