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

not able to understand the role of getchar and putchar here

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int c;
    c = getchar();
    while (c != EOF) {
         putchar(c);
    }
    return 0;
}

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

现在看看下面这段代码

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int c;
    c = getchar();
    while (c != EOF) {
         putchar(c);
         c = getchar ();   // added this single line 
    }
    return 0;
}

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

看看你提到的下面的代码

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

        }
        return 0;
}

c = getchar(); 执行时 & 如果您在 运行时 提供输入 ABC 并按下 ENTER(\n),那时候 c拥有第一个个角色A。 接下来进入循环,您的条件是 c!=EOFA!=EOF 始终为真并且它将无限打印 A 因为您不要求第二次输入所以 c 保持 A.

以上代码的正确版本是

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

case 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() returns EOF.