Подтвердить что ты не робот

Очистить экран в C и С++ в UNIX-системе?

Я хочу знать: как очистить экран от UNIX-системы? Я искал в Интернете, но я только что нашел, как это сделать в Windows: system ( "CLS" ) Я не хочу точно очистить экран, но я хочу открыть "новую страницу", например, в редакторах NANO и VI. Благодаря

4b9b3361

Ответ 1

Возможно, вы можете использовать escape-коды

#include <stdio.h>

#define clear() printf("\033[H\033[J")

int main(void)
{
    clear();
    return 0;
}

Но имейте в виду, что этот метод несовместим со всеми терминалами

Ответ 2

Вы можете использовать следующий код, который использует 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);
} 

Ответ 3

Обычно это не просто очистка экрана, но и создание приложения с поддержкой терминала.

Вы должны использовать библиотеку ncurses и прочитать Программирование NCURSES HowTo

(Возможно, вы можете использовать некоторые коды удаления ANSI как David RF ответил, но я не думаю, что это хорошая идея)

Ответ 4

Портативный 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 и использовать свой API для получения любых возможностей, которые вы хотите, хотя это может перетащить довольно много вещей для чего-то столь же простого, как очистка экрана. Тем не менее, это вариант, который следует рассматривать серьезно, поскольку он дает вам большую гибкость.

Ответ 5

#include <stdlib.h>
int main(void)
{
    system("clear");
}

Ответ 6

Чтобы очистить экран с помощью termcaps, используйте это:

write(1, tgetstr("cl", 0), strlen(tgetstr("cl", 0)));

Ответ 7

Просто используйте #include<stdlib.h> после #include<stdio.h>.

Затем вы можете использовать команду system("clear"); после main() {

то есть:

#include<stdio.h>
#include<stdlib.h>

int main()
{
    system("clear");

После этих команд вы можете продолжить свою программу.

Надеюсь, что это поможет:)

Ответ 8

Используйте system("clear"); с заголовком #include <stdlib.h> (для языка C) или #include <cstdlib> (для С++).