Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 打印前执行的扫描语句_C_Eclipse_Printf_Scanf - Fatal编程技术网

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)
确实有效,但这显然是编译器出现错误的少数情况之一。