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

友友可以指导一下吗,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 Acrn IVSHMEM doorbell问题
  • ¥15 yolov5中的val测试集训练时数量变小问题
  • ¥15 MPLS/VPN实验中MPLS的配置问题
  • ¥15 materialstudio氢键计算问题
  • ¥15 echarts图表制作
  • ¥15 halcon根据玻璃面板纹路取区域
  • ¥15 HFSS设计小型化180度耦合器
  • ¥15 使用CInternetSession,CHttpFile读取网页文件时有些电脑上会卡住怎么办?
  • ¥15 水下机器人的半物理仿真研究
  • ¥15 微服务假死,一段时间后自动恢复,如何排查处理