Как Вы очищаете консольный экран в C?

Есть ли "надлежащий" способ очистить консоль в C помимо использования system("cls")?

50
задан MD XF 21 October 2017 в 10:21
поделиться

6 ответов

Ну, C не понимает концепцию экрана. Поэтому любой код не будет переносимым. Может быть, посмотрите на conio.h или curses, в зависимости от ваших потребностей?

Переносимость - это проблема, независимо от того, какая библиотека используется.

24
ответ дан 7 November 2019 в 10:47
поделиться

Поскольку вы упомянули cls , похоже, вы имеете в виду окна. Если это так, то этот элемент базы знаний содержит код, который сделает это. Я просто попробовал, и это сработало, когда я вызвал его со следующим кодом:

cls( GetStdHandle( STD_OUTPUT_HANDLE ));
10
ответ дан 7 November 2019 в 10:47
поделиться
#include <conio.h>

и используйте

clrscr()
8
ответ дан 7 November 2019 в 10:47
поделиться

Не существует переносимого на C способа сделать это. Хотя различные библиотеки управления курсором, такие как curses, относительно переносимы. conio.h переносится между OS / 2 DOS и Windows, но не между вариантами * nix.

Само понятие «консоль» выходит за рамки стандарта C.

Если вы ищете чистое решение Win32 API, в консольном API Windows нет единого вызова для этого. Один из способов - FillConsoleOutputCharacter достаточно большого количества символов. Или WriteConsoleOutput Вы можете использовать GetConsoleScreenBufferInfo , чтобы узнать, сколько символов будет достаточно.

Вы также можете создать совершенно новый экранный буфер консоли и сделать его текущим.

5
ответ дан 7 November 2019 в 10:47
поделиться

Правильный способ сделать это - использовать функции tput или terminfo для получения свойств терминала, а затем вставить новые строки в соответствии с размерами ..

0
ответ дан 7 November 2019 в 10:47
поделиться

Windows:

система ("cls");

Unix:

система ("очистить");

Вы могли вместо этого вставляйте символы новой строки, пока все не будет прокручено, посмотрите здесь .

Благодаря этому вы легко добьетесь портативности.

2
ответ дан 7 November 2019 в 10:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: