я хочу получить чар дважды, но я не могу

int main()
{
    int r, c;
    r = getchar();
    c = getchar();
    putchar(r);
    putchar(c);
    printf("\n");
    return(0);
}

После считывания r программа выводит r и завершает работу. Я хочу, чтобы он запрашивал c и вводил его, но почему он этого не делает?


person Mark    schedule 10.04.2011    source источник


Ответы (2)


Вы вводите символы в одну строку или в две строки?

getchar() будет ждать, пока вы нажмете ввод, а затем начнет разбор символов. Если вы ввели 2 символа в 2 разные строки, будет прочитан первый символ , а затем \n символ.

Я имею в виду следующий ввод:

a
b

эквивалентно "a\nb".

getchar() возьмет \n вместо b и напечатает a\n\n.

Вы хотите ввести оба символа и только потом нажать Enter.

person evgeny    schedule 10.04.2011
comment
Чтобы уточнить: getchar не ждет, пока вы нажмете Enter; приложение терминала буферизует ввод, пока вы не нажмете Enter, а затем отправит все сразу. - person Potatoswatter; 10.04.2011

Вероятно, вы набираете X + Enter. Первый getchar() читает символ X, а второй getchar() читает новую строку, сгенерированную при нажатии Enter. Введите оба ваших символа, не нажимая Enter.

person Ernest Friedman-Hill    schedule 10.04.2011