Функция 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 за дополнительную информацию.

Другие вопросы по тегам