韩小闲 2022-01-13 00:30 采纳率: 50%
浏览 35
已结题

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

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

img

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

int main(){
int ch;

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

return 0;

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

  • 写回答

1条回答 默认 最新

  • 关注

    你 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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 1月21日
  • 已采纳回答 1月13日
  • 创建了问题 1月13日

悬赏问题

  • ¥15 init i2c:2 freq:100000[MAIXPY]: find ov2640[MAIXPY]: find ov sensor是main文件哪里有问题吗
  • ¥15 运动想象脑电信号数据集.vhdr
  • ¥15 三因素重复测量数据R语句编写,不存在交互作用
  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景