红色框的那里,书上说可以丢弃scanf()输入后的所有字符(包括换行符),换行符为什么可以丢弃,不是到了\n时就相等了吗,不是就不会进入这个while循环,我感觉不会舍弃吧
while循环为什么会舍弃换行符
红色框的那里,书上说可以丢弃scanf()输入后的所有字符(包括换行符),换行符为什么可以丢弃,不是到了\n时就相等了吗,不是就不会进入这个while循环,我感觉不会舍弃吧
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
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; }
解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 怎么使用hxe16进制编码器修改视频数据和图片一样!求教程!
- ¥15 怎么用python模拟光的折射,反射,和全反射
- ¥15 python打印机打印word和PDF文件出来的是乱码
- ¥15 求达梦8数据库安装包
- ¥15 YOLOv8模型网络结构更改后报错
- ¥15 深度学习中梯度为None
- ¥15 zynq烧写程序到flash后不运行
- ¥15 裸板ESD问题的思考与实验
- ¥15 electron+python
- ¥50 远程调试PLC的解决方案的问题