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" для явной записи содержимого на экран. Может быть, есть небольшое влияние на производительность.