友友可以指导一下吗,C语言关于getchar()和 putchar ()的问题

问题遇到的现象和发生背景

img

问题相关代码,请勿粘贴截图

int main(){
int ch;

while((ch = getchar())!='\n'){
    if(ch >= 'A' && ch <= 'Z'){
        getchar();
        putchar(ch);
    }    
}

return 0;

}
为什么这个循环里,putchar()只能输出一半字符而且是有序的,是我哪里写错了吗

你 while()中用 getchar()读取了一个字符, if()的{}中又用 getchar(); 读取了一个字符,
等于一次循环读取了两个字符,这样多读取的一个字符就被跳过了

把if(){}中的 getchar();去掉就可以了:

#include<stdio.h>
int main(){
    int ch;

    while((ch = getchar())!='\n'){
        if(ch >= 'A' && ch <= 'Z'){
            putchar(ch);
        }    
    }
    return 0;
}

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img