如果我使用getchar()函数并输入两个字符,第二个字符存储在哪里?

时间:2015-10-20 16:40:38

标签: c memory getchar

例如:

#include<stdio.h>

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

第二个字符是否会像堆栈一样卡在内存中的某个保留位置?因为我知道如果我要添加另一个c = getchar(),第二个字符将被赋值给变量c。

3 个答案:

答案 0 :(得分:4)

  

第二个字符是否会像堆栈一样卡在内存中的某个保留点?

最有可能在与stdin相关联的缓冲区中。

答案 1 :(得分:1)

如果您为单个字符输入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

答案 2 :(得分:0)

如你所知,getchar只接受一个变量。所以第二个&#39; A&#39;不存储任何where.it会在ROM上存在一段时间,但是当你点击它的那一刻它将会消失。