C 打印前执行的扫描语句
我有这个密码C 打印前执行的扫描语句,c,eclipse,printf,scanf,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; } #包括 内部主(空) { 内特犬; printf(“你有多少条狗?\n”); 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;
}
#包括
内部主(空)
{
内特犬;
printf(“你有多少条狗?\n”);
scanf(“%d”、&dogs);
printf(“因此您有%d只狗!\n”,狗);
返回0;
}
据我所知,在执行时,程序会说“你有多少条狗”,我输入一个数字。相反,我得到一个空白页,我必须首先输入一个数字。然后我得到
你有几条狗?
所以你有3只狗!(如果我输入3)
我正在使用Eclipse+MinGW,这是我第一次使用C,所以我不确定我必须设置什么。
printf()
buffers output。一般来说(在UNIX中),stdlib足够聪明,可以在读取stdin之前刷新stdout,但在MingW中可能不是这样。考虑使用<代码> FFLUSEH()/<代码>或输出到STDRR。 < P>我设法解决了这个问题。问题是eclipse首先处理所有扫描语句,然后处理所有打印语句。如果您的程序有多个扫描语句,这将很难解决
解决方法有点简单。从下载二进制修复程序
然后需要将starter.exe粘贴到安装Eclipse的路径中
在我的例子中,它是eclipse\plugins\org.eclipse.cdt.core.win32.x86_64_5.2.0.201309180223\os\win32\x86_64
你的可能有点。覆盖现有的starter.exe,它应该可以工作。我认为您的Eclipse有问题。我也这么说。它在代码块上运行良好。不知道我有什么想法。出于好奇,如果您尝试在第一个
printf
和scanf
之间刷新stdout
,Eclipse和MinGW是否仍然失败?这确实是Eclipse的问题。我研究了一下,很明显,有一个插件你可以下载来修复它。你可以在这里找到它()@The__Malteser如果你发布一个带有该链接的答案和Eclipse bug的摘要,我将对此进行投票。\n
需要刷新输出缓冲区,这是不符合要求的行为。上面的链接表明,fflush(stdout)
确实有效,但这显然是编译器出现错误的少数情况之一。