проблемы при повторном использовании getchar() в C

Мой код:

#include "stdio.h"
main() {
    char a,b;
    a=getchar();
    b=getchar();

    putchar(a);
    putchar('\n');
    putchar(b);
}

getchar() требует от пользователя ввести символ, а затем нажать клавишу ввода, чтобы присвоить его переменной. Я ожидал, что программа позволит мне ввести символ дважды, каждый раз заканчивая нажатием клавиши ввода. Но мне удалось ввести только одну строку символов, и программа автоматически прочитает первые два символа и назначит их каждой переменной. В чем проблема?


person AtlasRE    schedule 21.09.2017    source источник
comment
проблема в том, что вы вводите символ + ввод. Первый getchar() читает символ, второй — новую строку. Много подобных вопросов здесь, кстати.   -  person Ingo Leonhardt    schedule 21.09.2017
comment
Каждый раз, когда вы нажимаете ENTER, вы вводите символ (\n). Таким образом, вы фактически вводите 2 символа за раз.   -  person P.P    schedule 21.09.2017
comment
В сторону: #include"stdio.h" main() { char a,b; ... должно быть #include <stdio.h> int main(void) { int a,b; ...   -  person Weather Vane    schedule 21.09.2017
comment
getchar() читает из входного буфера при нажатии Enter. Поэтому, если вы наберете a, затем b, а затем Enter, вывод будет a и b.   -  person Weather Vane    schedule 21.09.2017


Ответы (1)


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

getchar() принимает один символ в качестве ввода. Даже ввод \n считается одним символом до getchar(). Таким образом, когда вы вводите символ, он будет вводом для первого getchar(), а ввод '\n' будет вводом для второго getchar().

Ex:

Когда вы нажмете a, он будет прочитан первым getchar(), после чего, если вы нажмете Enter '\n', он будет считаться вводом для второго getchar().

person Sathiya    schedule 21.09.2017