C语言scanf为啥有时候要输入两次(解析)

我们先看一下这个例子:

我们看上面的图片,一个scanf()一个格式控制符我们却输入了两次,这是因为我们在scanf()里加入了’ \n ‘。
简单地说:如果在格式字符串(出现了空白字符(空格、\n、\t之类),那么 scanf() 会吃掉输入中所有接下来的空白字符。也就是说,在这段代码中 scanf 会等到输入中出现非空白字符才会返回。而scanf()函数的结束是回车,所以我们输入了 1,回车,2,当输入2时,空白字符的吃掉效果就消失了这时再回车结束。1因为先进缓冲区, 所以1赋给了a。注意这时候缓冲区有,你输入的空白符,2。当再次赋值时候scanf()忽略空白符,把有效数字赋值,但如果下一句是 ‘%c’,那么空白符就赋值了,因为’ %c '这个参数只要缓冲区例的第一个字符,无论是啥。

你可能会这样想,输入了1,按回车,scanf()中有回车所以回车被吃掉了。其实回车和空格、\t等一些都是空白字符一样的,并无差异。 你可以输入 1 空格 2 回车。和上面效果一样,只要输入个空白符就行。
例:

效果和第一张图是一样的。

接下来看一张图

上图的格式字符串里也有空白字符不过是空格了,我们可以看到它和格式字符串里加\n的效果是一模一样的。这就更说明了格式字符串里加
’ \n’ ,’ \t ’ ,空格等空白字符,它们的效果是一模一样的。

C语言scanf为啥有时候要输入两次(解析)相关推荐

  1. C语言编程>第一周 ⑧ 输入两个正整数m和n,求其最大公约数和最小公倍数。

    例题:输入两个正整数m和n,求其最大公约数和最小公倍数. 代码如下: /*程序分析:利用辗除法.*/ #include"stdio.h" main() {int a,b,num1, ...

  2. c语言编程从键盘上输入两个整数m和n,C语言习题 求键盘输入的两个正整数的最大公约数和最小公倍数...

    C语言习题 求键盘输入的两个正整数的最大公约数和最小公倍数以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! C语言习题 求 ...

  3. java输入两个整数_求平均值._用C语言编写:完成从键盘输入两个整数a和b,求平均值ave,并输出平均值...

    #includevoid main(){int a,b,ave;printf("输入两个整数:');scanf("%d%d",&a,&b);ave=(a+ ...

  4. 关于C语言scanf的问题(输入字符串的时候)

    目录 code:demo_scanf.c 情况1: 情况2: 情况3: 注: code:demo_scanf.c #include <stdio.h>int main(void) {int ...

  5. 输入两个数、用python求他们的和_从键盘上输入俩个实型数,编程求它们的和差积商,要求输出时,保留两位小数C语言编程题:从键盘上输入两个...

    从键盘上输入俩个实型数,编程求它们的和差积商,要求输出时,保留两位小数 C语言编程题:从键盘上输入两个 www.zhiqu.org     时间: 2020-11-23 参考代码: #includev ...

  6. 为什么 scanf( )(scanf_s)函数老要输入两次才行?

    如图:scanf()函数老要输入两次,按回车键盘后还得输入一个数再按回车健,才结束 #include <stdio.h> int main() {int i, b;int result;/ ...

  7. C语言编程>第一周 ③ 输入某年某月某日,判断这一天是这一年的第几天

    例题:输入某年某月某日,判断这一天是这一年的第几天 程序分析:以2020年8月8日为例,应该先把前八个月的加起来,然后再加上8天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天. 代码如 ...

  8. c语言中怎么暂停一个一个游戏,求助:最近在linux下用c语言写了一个贪吃蛇程序,有几个问题,第一:贪吃蛇怎么实现暂停,第二:有时候同时输入上下左右中的两个键就会直接游戏结束...

    求助:最近在linux下用c语言写了一个贪吃蛇程序,有几个问题,第一:贪吃蛇怎么实现暂停,第二:有时候同时输入上下左右中的两个键就会直接游戏结束 /* 以下是主要的逻辑代码,还有些.c和.h就没发了 ...

  9. C语言scanf连续输入两个字符

    C语言scanf函数连续输入两个字符出现的问题 上代码 //初始代码,输入1,2,a,b,每次输入按了一次回车 int a,b; char c,d; scanf("%d%d",&a ...

  10. c语言怎么同时输入两个字符,解决C语言中使用scanf连续输入两个字符类型的问题...

    昨天用C编程,遇到一个关于scanf的细节问题,假如运行如下程序: #include int main() { char ch1,ch2; printf("Input for ch1:/n& ...

最新文章

  1. 史上最全 | 数据分析技能详细拆解,一张图覆盖全流程知识细节和资源推荐(附下载)...
  2. 如何进入、退出docker的container
  3. 软考考后常见问题汇总
  4. css列表格式属性,css list-style-type属性笔记
  5. docker 修改容器的主机名
  6. 【机器视觉】 gen_measure_arc算子
  7. iOS-AFNetworking参数和多文件同时上传【多文件上传】
  8. 使用CSS实现无滚动条滚动
  9. oracle只匹配中文,Oracle 实现 一个关键字 匹配多个 字段
  10. java不能变成class_java.lang.Class不能转换为java.lang.reflect.ParameterizedType
  11. EDFbrowser查看edf文件及睡眠分期认识
  12. C#在word中插入表格(包含从excel中选取表格插入到word中)
  13. 组装办公室用计算机,(需要组装一批电脑,用于办公。多运用于普通办公软件,WORD、EXCEL、PPT、PS等。 要求实惠,可用集成显卡。)组装电脑excle模板...
  14. 《沈剑架构师训练营》第6章 - 缓存架构
  15. 解决viewer.js预览PDF文件 无法展示PDF水印的问题
  16. debian/ubuntu和centos的系统升级命令
  17. QuickGank:一款基于AndroidQuick快速开发框架的Gank.io客户端
  18. 语义分析语义关联挖掘
  19. 广东省新型数据中心发展白皮书
  20. matlab图像去雾实现

热门文章

  1. linux dbm数据库,Linux dbm遇到的一些问题
  2. Mysql支持translate函数吗_Oracle-函数-translate
  3. cydia无法安装卸载插件_简单 用文件管理器干掉Cydia顽固插件源
  4. 华为手机默认浏览器打开应用宝链接直接启动应用问题解决
  5. 多个桌面Deskspace如何使用
  6. 网站优化中SEO关键词密度到底多少属于合理?
  7. Debain查看ip地址
  8. 骨骼动画详解-Spine
  9. 用于检验手机号的位数以及检验此手机中是否为中国移动的手机号
  10. 详解Linux帮助命令——help、--help、man、info