В моих кодовых функциях есть время, которое требуется выполнить, например, вычисление количества слов в больших файлах. Я хочу, чтобы показать пользователю вывод так:Программа C не выполняется в правильном порядке
calculating word number ...
Execute функцию затем печати: 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- the-call-except-a-newline-in-the-format-strin) – dbarnes
Добро пожаловать в разницу между буферизованным и небуферизованным вводом-выводом. –