Я хочу знать: как очистить экран от UNIX-системы? Я искал в Интернете, но я только что нашел, как это сделать в Windows: system («CLS») Я не хочу, чтобы точно очистить cpmpletely экран, но я хочу открыть «новую страницу», такую как в редакторах NANO и VI. СпасибоОчистить экран в C и C++ в UNIX-системе?
ответ
Как правило, это не просто очистка экрана, но и приложение с поддержкой терминала.
Вы должны использовать ncurses библиотеку и читать NCURSES programming HowTo
(Вы могли бы, возможно, использовать некоторые ANSI escape codes, как David RF ответил, но я не думаю, что это хорошая идея)
Может быть, вы можете использовать эвакуационные кодов
#include <stdio.h>
#define clear() printf("\033[H\033[J")
int main(void)
{
clear();
return 0;
}
Но имейте в виду, что этот метод не совместим со всеми терминалами
Можете ли вы уточнить "\ 033 [H \ 033 [J" – krupal
[Последовательности выхода из строя ANSI/VT100] (http: //www.termsys. demon.co.uk/vtansi.htm) –
Вы можете использовать следующий код, который использует termcap для прозрачного экрана. (не забудьте связать с библиотекой)
#include <stdio.h>
#include <stdlib.h>
#include <termcap.h>
void clear_screen()
{
char buf[1024];
char *str;
tgetent(buf, getenv("TERM"));
str = tgetstr("cl", NULL);
fputs(str, stdout);
}
+1, на Debian вы должны установить 'libncurses5-dev' и скомпилировать с помощью' -lncurses' –
Портативный код UNIX следует использовать базу данных Terminfo для всех курсоров и экран манипуляции. Это то, что использует библиотеки, такие как curses
, для достижения таких эффектов, как окна и т. Д.
В базе данных terminfo содержится список возможностей (например, clear
, что и используется для очистки экрана и отправки курсора в верхнюю часть). Он поддерживает такие возможности для широкого диапазона устройств , поэтому вам не нужно беспокоиться о том, используете ли вы консоль Linux или очень датированный терминал VT52.
Как, как вы получить характер потоков для определенных операций, вы можете выбрать освященное время, но довольно ужасный метод только с помощью system
сделать это:
system ("tput clear");
Или вы можете захватить вывод из этой команды в буфер, так позже использовать вовлекают только выводить символы вместо повторного запуска команды:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
static char scrTxtCls[20]; static size_t scrSzCls;
// Do this once.
FILE *fp = popen ("tput clear", "r");
scrSzCls = fread (scrTxtCls, 1, sizeof(scrTxtCls), fp);
pclose (fp);
if (scrSzCls == sizeof(scrTxtCls)) {
actIntelligently ("you may want to increase buffer size");
}
// Do this whenever you want to clear the screen.
write (1, cls, clssz);
Или, вы можете связать с ncurses
и использовать его A PI, чтобы получить любые возможности, которые вы хотите, хотя это может перетащить немало вещей для чего-то столь же простого, как очистка экрана. Тем не менее, это вариант, который следует рассматривать серьезно, поскольку он дает вам большую гибкость.
#include <stdlib.h>
int main(void)
{
system("clear");
}
Чтобы очистить экран с помощью termcaps, используйте:
write(1, tgetstr("cl", 0), strlen(tgetstr("cl", 0)));
Просто используйте #include<stdlib.h>
после #include<stdio.h>
.
Затем вы можете использовать команду system("clear");
после main() {
я.e:
#include<stdio.h>
#include<stdlib.h>
int main()
{
system("clear");
После этих команд вы можете продолжить свою программу.
Надеется, что это помогает :)
Использование system("clear");
с заголовком #include <stdlib.h>
(для языка C) или #include <cstdlib>
(для C++).
vi и nano используют буферы для хранения текстовых данных. Вам понадобится реализовать такой буфер и механизм прокрутки. –
'printf (" \ e [2J \ e [H ");' –