Иногда, когда я устанавливаю программы, я вижу индикатор выполнения в окне консоли (или другое динамическое изменение текста). Он отображается и изменяется в одной строке строки. Когда я использую printf
или другую функцию, я пишу следующий текст, но я не могу изменить в окне консоли уже существующий текст. Как я могу это сделать через C?Изменение существующего текста в окне консоли
ответ
Самый простой способ для такого эффекта - использовать символ возврата каретки \r
, который позволяет вам писать поверх предыдущей строки.
Если вы хотите, чтобы иметь прямой доступ к буферу консоли (то есть писать в конкретной X/Y позицию вместо строки построчно), то вы, вероятно, ищете библиотеку помощника как pdcurses
,
Если вы хотите использовать printf и легко перейти к «change», используйте \r
, который является возвратом каретки на linux. Это не будет работать на MAC, потому что это означает, что новая линия.
Если вы сделаете это, я бы посоветовал использовать ioctl, чтобы скрыть каретку, чтобы предотвратить мерцание и уродливое состояние.
Если вы хотите получить лучший способ манипулирования текстом на экране, вы можете посмотреть на ncurses