2017-07-21 36 views
1

这是我的代码[注:我使用Eclipse为C/C++ Windows平台]为什么printf在预期的时候不被调用?

#include <stdio.h> 
#include<stdlib.h> 

int main(void) { 
    int num; 
    printf("Enter a number:\n"); 
    scanf("%d",&num); 
    if(num%2==0) 
     printf("Number is Even"); 
    else 
     printf("Number is Odd"); 
    return EXIT_SUCCESS; 
} 

在这里,我必须先输入整数才把printf的叫......我想先调用printf在我输入Integer之前......我在这里做错了什么?

例如这是输出,我得到

6 
Enter a number: 
Number is Even 

和预期产量

Enter a number: 
6 
Number is Even 
+1

是不是'scanf'没有返回,或者最终调用'printf'没有产生输出? –

+0

祝贺发布[MCVE]。具体来说,您正在使用哪种环境。另外,您是使用普通shell还是正在读/写来自文件或管道的输入/输出? – EOF

+1

如果程序不能将'stdin/stdout'识别为“交互式设备”,它将被完全缓冲。在这种情况下,可能会缓存输出,直到遇到对'fflush(stdout)'(或其他函数调用之一)的调用。 – EOF

回答

0

你可以第一个printf后调用fflush(标准输出)打印缓冲输出。但考虑到将来如果用更多的printf扩展程序,那么在每次printf之后添加fflush将会产生开销。所以,你可以全部用printfs前加

则setbuf(标准输出,NULL)

。 这将确保没有输出被缓冲,您将立即看到打印件。

相关问题