C - \r не работает в printf() с nanosleep()

Я пытался использовать символ '\r', чтобы написать поверх предыдущей строки; однако при использовании вместе с nanosleep() программа не выводит до конца. Вот пример кода:

int i;
struct timespec t = {1, 0};
for (i = 0; i < 10; ++i) {
    nanosleep(&t, NULL);
    printf('\ri: %d', i);
}

Это будет ждать 10 секунд, а затем распечатать i: 9, Я хотел бы, чтобы это показывало обновления, а не только конец. Я не уверен, что линия очищается или что-то?

Любая помощь очень ценится!

1 ответ

Решение

Консоль кэширует вашу строку, пока не появится символ \n (новая строка). Вы можете использовать "fflush" для явной записи содержимого на экран. Может быть, есть небольшое влияние на производительность.

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