Функция printf в C не печатает, пока не закончится цикл
Я хочу проверить, активны ли разные циклы, поэтому у меня есть оператор print, который повторяется каждые 500 мс в каждом цикле, однако оператор print не печатает каждые 500 мс, он ожидает завершения цикла и затем печатает все сразу, а не периодически,
Как мне заставить мою программу периодически печатать на терминал?
Я студент, поэтому мои знания по SDL довольно ограничены, поэтому было бы полезно получить подробные объяснения.
int main(void)
{
int i = 0;
while(i<10)
{
printf("While loop active.\t"); i++;
SDL_Delay(500);
}
return 0;
}
PS Я видел этот дублирующий вопрос, но я не согласен, так как его вопрос предполагает проблему с "обработкой сигнала", о которой я ничего не знаю, поэтому, задавая этот вопрос, я не думал, что его вопрос будет иметь тот же ответ, что и мой. Я согласен с тем, что ответы такие же.
1 ответ
Вы, вероятно, не смываете стандартный вывод. Добавить новую строку в printf
позвоните, и вы должны быть в порядке:
printf("While loop active.\n");
/* Here ------------------^ */
Или, если важно сохранить \t:
printf("While loop active.\t");
fflush(stdout);
Благодарим @lurker за дополнительную информацию.