在我的代碼中有一些函數需要一段時間才能執行,比如計算大文件中的字數。我想展現給用戶這樣的輸出:C程序沒有以正確的順序執行
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
一起完成。
爲什麼會發生這種情況?
可能的重複[爲什麼printf在調用後不刷新,除非換行符在格式字符串中?](http://stackoverflow.com/questions/1716296/why-does-printf-not-flush-after-除非換行符在格式中) – dbarnes
歡迎使用緩衝和非緩衝I/O之間的區別。 –