Ответ 1
Извините, вы не можете.
Но вы можете выпустить системные вызовы, чтобы очистить весь экран, например system("clear")
(зависит от ОС).
Или используйте ncurses
так же, как упомянул Кос в комментарии.
printf("Error %d\n", 1);
printf("\nStatus: %d%%", 50);
печатает
Error 1
Status: 50%
В этой настройке есть ли возможность вставить Error 2\n
между Error 1\n
и \nStatus: 50%
. Я понимаю, что \r
и \b
могут использоваться для изменения печатного текста в одной строке (например, если есть один \n
между Error 1
и Status: 50%
), но я могу изменить текст в предыдущем линия?
Спасибо!
Извините, вы не можете.
Но вы можете выпустить системные вызовы, чтобы очистить весь экран, например system("clear")
(зависит от ОС).
Или используйте ncurses
так же, как упомянул Кос в комментарии.
Что сказал @Ryan.
Объяснение: stdout
- это абстрактный поток, который не должен быть терминалом. Это может быть файл, труба, сокет, принтер, текстовое устройство или другое. Во многих случаях нет смысла в том, что вы просили сделать. Следовательно, вам нужна библиотека, которая специально работает с терминалом.
Вы можете использовать ANSI Escapesequences, чтобы переместить "курсор" в одну строку вверх:
void cursorOnLineUp(void) { printf("\033[1A"); }
Или установите его в определенную позицию:
void setCursor(int column, int row) { printf("\033[%d;%dH", row, column) }
Не пробовал это для С++, но успешно использовал его для простой игры в ANSI-C!