printf()似乎没有按预期工作

时间:2012-03-04 20:02:45

标签: c printf

以下代码上的

Printf()在某些机器(包括我的机器)上可能表现不正确。

printf("\n number of factor %d\n", sum); 
fflush(stdout);
if(sum == 0) 
{   
   printf("\n The  number %d is prime", p);
} 

代码首先打印出变量“sum”,如果总和为零则打印出数字。

虽然第一个printf打印正确,但第二个printf语句不会打印。 我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:1)

您要么在printf格式字符串的末尾错过换行符,要么在fflush

的另一次调用中错过

为什么fflush很重要的例子

// file exflu.c
#include <stdio.h>
#include <unistd.h>
int main(int argc, char**argv) {
   int i=0;
   printf ("without newline from %s", argv[0]);
   // add perhaps a fflush(stdout); here
   sleep(5);
   scanf ("%d", &i);
   printf(" i=%d\n", i);
   return 0;
}

使用和不使用fflush时观察上述程序;如果没有它,则会在五秒钟后显示消息(因为scanf可能隐含地执行了fflush(NULL)。)

相关问题