Как выйти из экрана консоли на языке Си - PullRequest
0 голосов
/ 27 декабря 2018

Я пытаюсь выйти из экрана консоли, т.е. закрыть экран, какую команду я могу использовать для достижения этой цели.

void main()
{
    int n;
    printf("Please enter a number less than 5");
    scanf("%d", &n);
    if(n <= 5)
       printf("good");
     else
     {
        printf("You entered a number above so the program will exit");
        //here i need to call a function or use a command that will close
        // the console screen;
     }
}

Любая помощь будет оценена, спасибо

Ответы [ 2 ]

0 голосов
/ 27 декабря 2018

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

Если вы запускаете код из IDE, часто IDE создает консольный процесс и запускает ваш код в этом.В этом случае консоль не «принадлежит» вашему приложению, но выполняется как дочерний процесс;в этом случае окно будет оставаться открытым, пока не будет закрыт родительский процесс, запущенный IDE.Аналогично, если вы запускаете свою программу из командной оболочки.Вероятно, неоправданно поведение процесса пытаться закрыть своего родителя, даже если это возможно.

Можно "скрыть" окно консоли, пока процесс продолжает выполняться, чтоможет быть то, что вы просите;средство для этого зависит от платформы, а вы не указали;для Windows такой вопрос будет дубликатом Win32 программирования, скрывающего окно консоли .Однако вполне возможно, что эти методы не будут работать, если процесс запущен не напрямую, а из другого консольного процесса.

0 голосов
/ 27 декабря 2018

Стандарт C11 n1570 не знает о "экране консоли" (и, я полагаю, вы говорите о эмуляторе терминала , на котором работает ваша программа).Обратите внимание, что C11 не упоминает «экраны» или «клавиатуры» (только стандартные потоки и очень часто stdout - это , а не «консоль») имногие компьютеры (например, большинство интернет-серверов или суперкомпьютеров, или даже ваш мобильный телефон ...) не имеют обоих.Кроме того, ваша программа может быть запущена (даже в Windows) с перенаправлениями или в конвейере , и тогда у нее нет консоли (так что ваш вопрос не имеет никакого смысла в такой общей ситуации).case).

Так что в общем случае нет способа сделать то, что вы хотите (так как это не имеет никакого смысла) стандартным способом.

ВозможноВаша операционная система предоставляет некоторый (для конкретной ОС) способ достижения этого.Поэтому изучите API-интерфейс операционной системы, относящийся к вашей системе (например, WinAPI в Windows или системные вызовы Linux, перечисленные в syscalls (2) ).

Возможно, вы захотите использоватьнекоторая библиотека, связанная с терминалом, например ncurses .

Если ваш терминал следует условным обозначениям ANSI , вы можете следовать им.

В противном случае рассмотрите возможностьваша программа имеет GUI .Для этого вам практически понадобится набор инструментов для виджетов (например, Qt , GTK и т. Д.)

Вы также можете рассмотреть некоторые межпроцессное взаимодействие с вашей рабочей средой .Как это сделать (или даже его возможность) очень зависит от операционной системы и рабочего стола и может быть связано с сеансом управлением.

Кстати, помните, что stdout часто буферизуется (ивозможно с линейной буферизацией).Вам лучше завершить свои printf управляющие строки с помощью \n и / или вызова fflush .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...