если бы я использовал функцию getchar() и ввел два символа, где хранится второй символ?

Например:

#include<stdio.h>

int main()
{
   char c;
   c = getchar(); // Let's say you enter AA
   printf("%c\n", c);
}

Застревает ли второй символ в каком-то резервном месте в памяти, например в стеке? Потому что я знаю, что если бы я добавил еще один символ c = getchar(), второй символ был бы присвоен переменной c.


person Luis Averhoff    schedule 20.10.2015    source источник
comment
Вы смотрели - stackoverflow.com/questions/ 3676796/   -  person badola    schedule 20.10.2015


Ответы (3)


Застревает ли второй символ в каком-то резервном месте в памяти, например в стеке?

Скорее всего, он находится в буфере, связанном с stdin.

person R Sahu    schedule 20.10.2015

Если вы введете AA для одного символа, оставшийся ввод останется в буфере stdin, как показывает эта программа. Вместо того, чтобы печатать символы, для ясности печатается их значение ASCII. Я ввел AA<Enter> только один раз.

#include<stdio.h>

int main()
{
    char c;
    c = getchar(); // Let's say you enter AA<Enter>
    printf("%d\n", c);

    c = getchar(); // still another A to come
    printf("%d\n", c);

    c = getchar(); // still a newline to come
    printf("%d\n", c);

    return 0;
}

Программная сессия

AA
65
65
10
person Weather Vane    schedule 20.10.2015

как вы знаете, getchar принимает только одну переменную. Поэтому 2-й «A» не будет храниться где-либо. Он будет некоторое время находиться в ПЗУ, но в тот момент, когда вы нажмете Enter, он исчезнет.

person Samir    schedule 20.10.2015
comment
getchar(3) не принимает переменные и ничего не хранит в ПЗУ во всех местах. - person vonbrand; 20.10.2015