Исходя отсюда: https://stackoverflow.com/a/1716621/1461017
Я хочу напечатать отдельные точки (точки, "."), По одной на одной линии, под управлением цикла for
:
for (i=0; i<100; i++)
{
printf(".");
sleep(1);
}
printf("\n");
Но результат выводится на экран только после последнего "\ n", и я хочу, чтобы каждый отображался сразу после печати, чтобы он служил индикатором прогресса. Я ожидал, что fflush()
стандартный вывод на каждой итерации цикла даст такой результат, но это не работает (результаты отображаются только на экране после выполнения цикла for):
for (i=0; i<100; i++)
{
printf(".");
sleep(1);
fflush(stdout);
}
printf("\n");
Более того, я проверил все эти подходы, как внутри, так и вне цикла, но безуспешно:
fflush(stdout);
fflush(NULL);
setbuf(stdout,NULL);
Что здесь происходит, и как я могу это решить?
Дополнительные данные:
- Ubuntu Linux v16 в качестве операционной системы.
- Код :: Блоки как IDE.
- Проблема возникает только при работе в командной строке Bash . Работает нормально внутри IDE.
- Протестировано на Ubuntu Linux (то же, что запускает IDE) и FreeBSD (через кросс-компиляцию с помощью clang).