jbr1121 2022-02-08 17:10 采纳率: 66.7%
浏览 44

while循环为什么会舍弃换行符

img


红色框的那里,书上说可以丢弃scanf()输入后的所有字符(包括换行符),换行符为什么可以丢弃,不是到了\n时就相等了吗,不是就不会进入这个while循环,我感觉不会舍弃吧

  • 写回答

2条回答 默认 最新

  • a5156520 2022-02-08 17:46
    关注

    scanf因为是读取整数,输入后面的换行符会丢弃,如果是按字符读取就会一直读取。
    while循环的执行是:首先是执行getchar(),如果没遇到换行符就一直读取字符,直到遇到换行符(这时换行符被从输入流读走了),然后while循环结束。
    可以用个小例子来测试:

    
    #include <stdio.h>
    
    int main(void){
        
        int a;
        scanf("%d",&a);
        
        char ch =getchar();
        printf("ch=%d,=%c",ch,ch);  //这里的按整数输出是10 ,对应换行符的ASCII码,说明scanf读取整数后还有一个换行符。
    
        return  0;
    }
    

    img

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 2月8日

悬赏问题

  • ¥15 怎么使用hxe16进制编码器修改视频数据和图片一样!求教程!
  • ¥15 怎么用python模拟光的折射,反射,和全反射
  • ¥15 python打印机打印word和PDF文件出来的是乱码
  • ¥15 求达梦8数据库安装包
  • ¥15 YOLOv8模型网络结构更改后报错
  • ¥15 深度学习中梯度为None
  • ¥15 zynq烧写程序到flash后不运行
  • ¥15 裸板ESD问题的思考与实验
  • ¥15 electron+python
  • ¥50 远程调试PLC的解决方案的问题