在我的代码函数中需要一段时间才能执行,比如计算大文件中的单词数.我想向用户显示如下输出:
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;
}
Run Code Online (Sandbox Code Playgroud)
并且计算单词数的函数是:
int number(FILE * dico)
{
int n=0;
char mot[20];
rewind(dico);
while (fgets(mot, 20, dico) != NULL)
{
n+=1;
}
return n;
}
Run Code Online (Sandbox Code Playgroud)
执行一个非常大的文件输入功能后,输出似乎没有参加.事实上,等待时间是在第一次之前printf("calculating word number ...");,然后当它结束时所有的printf一起完成.
为什么会这样?
您的输出正在缓冲.由于第一次打印时没有行结束,因此它将被stdout缓冲而不显示.如果有足够的字符,它会写入它,或者如果它有一个行结束,或者stdout被刷新或者它被写入一个无缓冲的流(如stderr),它可能会立即出现.
它仍然以正确的顺序执行,但它不是立即显示的东西.