我的代码中有一些函数需要一段时间才能执行,例如计算大文件中的单词数。我想向用户显示这样的输出:
calculating word number ...
执行功能然后打印: calculating word number ... OK
为此,我的主要任务是:
int main(int argc, char * argv[])
{
int number_of_words;
FILE * dico = NULL;
dico = fopen(argv[1],"r+");
printf("calculating word number ...");
number_of_words = number(dico);
printf("OK\n");
return 3.14;
}
计算单词数的函数是:
int number(FILE * dico)
{
int n=0;
char mot[20];
rewind(dico);
while (fgets(mot, 20, dico) != NULL)
{
n+=1;
}
return n;
}
在为一个非常大的文件执行输入功能之后,输出似乎没有人照看。实际上,等待时间是在第一次之前printf("calculating word number ...");
,然后在结束时,所有这些printf
都一起完成。
为什么会这样?
您的输出正在缓冲。由于在您的第一次打印中没有行结尾,因此它正在由stdout缓冲并且不显示。如果有足够的字符,它将写它,或者它的行尾,或者刷新了stdout,或者将其写入了无缓冲流(如stderr),它可能会立即显示出来。
尽管它仍在以正确的顺序执行,但是它并没有立即显示内容。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句