простой вопрос об использовании getchar ()? - PullRequest
1 голос
/ 11 сентября 2011

При поиске всего о функции getchar () на этом действительно замечательном сайте я обнаружил этот пост: Почему getchar () не ждет, пока я нажму enter после scanf ()?

#include <stdio.h>

int main()
{
    int value;
    printf("1. option 1.\n2. option 2.\n3. option 3.\n4. Exit\n\nMake an option: ");
    scanf("%d", &value);
    switch (value)
    {
        case 1:
            printf("you selected the option 1.");
            break;
        case 2:
            printf("you selected the option 2.");
            break;
        case 3:
            printf("you selected the option 3.");
            break;
        case 4:
            printf("goodbye");
            break;
        default:
            printf("thats not an option");
            break;
    }
    getchar();//here is the question,why it's useful ?
    return 0;
}

Я понимаю всю программу и понимаю, что каждый раз, когда она вызывается, getchar считывает следующий входной символ из текстового потока и возвращает его в качестве значения. То есть после

c = getchar();

переменная c содержит следующий символ ввода. Персонажи обычно приходят из клавиатура.

Но вот вопрос: почему программист вызвал getchar () в конце программы?

Ответы [ 3 ]

4 голосов
/ 11 сентября 2011

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

1 голос
/ 11 сентября 2011

Обычно в консольных приложениях, когда вы работаете в IDE и запускаете код, всплывающее окно терминала запускает код, и как только основная функция завершается, окно терминала также исчезает, и пользователи не могут видеть последний вывод,Нам нужно сделать так, чтобы экран ждал.Один из способов - заставить программу завершиться, ожидая ввода.Некоторые люди используют небуферизованную функцию ввода в конце, поэтому, когда вы нажимаете клавишу, функция читает ее и сразу же возвращается.В этом случае вы используете getchar, которая является буферизированной функцией ввода, в этом случае, когда вы закончили проверку экрана, нажмите любой символ и нажмите ввод, который вернется из функции и после этого завершит программу.Вы могли бы использовать scanf или другие способы удержания экрана.

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

1 голос
/ 11 сентября 2011

Последняя функция getchar () предназначена для того, чтобы приложение ожидало нажатия клавиши перед выходом.

...