在这里无法理解getchar和putchar的作用

时间:2018-06-02 07:01:29

标签: c getchar putchar

getView()

当我编译并输入输入ABC然后按回车键时,永无止境的循环就像AAAAAAAAA那样开始....

现在看看下面的代码

ImageButton imageButton = (ImageButton) v.findViewById( R.id.ib);

在这个程序中,当我输入ABC时,输出是ABC。 任何人都可以解释为什么它不显示单个A作为输出?

1 个答案:

答案 0 :(得分:0)

请查看您提及的以下代码

int main(void){
        int c;
        c = getchar();
        while (c != EOF) {
                putchar(c);

        }
        return 0;
}

c = getchar();执行&如果您在运行时&中提供了ABC输入按ENTER(\n),该时间c拥有第一个字符A。 接下来循环,你的条件是c!=EOF,即A!=EOF,它始终是真的&它将无限打印A,因为您没有要求第二次输入,因此c持有A

上述代码的正确版本是

int main(void){
        int c;
        while ( (c = getchar())!=EOF) { /* to stop press ctrl+d */
                putchar(c);
        }
        return 0;
}

案例2: - 现在查看第二个代码

int main(void){
        int c;
        c = getchar(); 
        while (c != EOF) { /*condition is true */
                putchar(c);  
                c = getchar ();/*After printing ABC, it will wait for second input like DEF, unlike case-1  */ 
        }
        return 0;
}

任何人都可以解释为什么它只显示一个A作为输出吗?为什么它只能打印A,它打印你给出的任何输入,如ABC& ;等等。请注意,getchar()适用于缓冲输入,即当您按ENTER getchar()时,会读到& {如果没有任何内容可以阅读getchar(),则会返回EOF