Я пытаюсь обновить текст на терминале без повторной печати текста. Сейчас я пытаюсь сделать это на простом коде:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, char *argv[]){
for(int i=0;i<=100;++i){
printf("\r[%3d%%]",i);
sleep(1);
}
printf("\n");
return 0;
}
Код буквально ничего не печатает, а указатель мигает в начале строки. Кто-нибудь может мне помочь?
Стандартный поток вывода обычно буферизуется строками, поэтому, если вы не напечатаете новую строку (например, \n
), вывод останется в буфере.
После звонка printf
звоните fflush(stdout);
. Это очистит стандартный поток вывода, чтобы вы могли видеть текст.
а можно просто отключить буферизацию
Деталь: «выходной поток по умолчанию буферизуется по строкам» --> нет режима буфера по умолчанию, просто общая настройка реализации, которая
stdout
буферизуется по строкам..