C语言的那些事-----输入输出

话不多说,直接上代码
在这里插入图片描述

a,b是整型变量,b是浮点型,c是字符型,scanf()函数的内容是,输入的内容从左到右分别是:
输入宽度为2的整数给a,跳过宽度为2的整数,输入有效位数为2的浮点数给b,输入宽度为2的字符数据给c,
其余的整数给d
就是这样的功能。
没有理解的有以下几点:
一、输入的34为何省略了,scanf()中的"%*2d"代表什么?
代表的是直接跳过了宽度为2的的整型数据,即忽略两个0~9的整数
二、为什么按照顺序,变量c中应该是存放了‘78’两个字符的数据,输出却只有‘7’?
因为输出的是单个字符,从左到右输出7一个字符即完成
在这里插入图片描述
三、输入12345678900,输出d=900,输入123456789m0,输出d=9
说明在使用scanf()函数给整型变量d输入数据时,读取到非整型数据时会停止输入

另外,还有关于字符数据输入输出
getchar(),putchar()都是输入输出单个字符,其中getchar()是带回显的函数,即输入的字符会显示在屏幕上,相反如果想要在输入单个字符却又不显示在屏幕上时,可以使用无回显的函数getch(),其对应的头文件是#include<conio.h>

===========================================================

没过半小时,突然又遇到了问题

在这里插入图片描述
问题在于输出ab时,多了个回车符
关于getchar(),从键盘接收的字符储存在stdin流缓冲区内,与此同时,在执行scanf函数时,最后有个回车确认符停留在缓冲区没有得到处理,所以在接着执行getchar读取ab后,缓冲区的字符是‘回车、a、b’,再次输出c1,c2时,得到一个回车和a
既然问题出现了,那么就需要去解决,既然多了个回车符,,那就去掉它就OK了
一种是通过一个getchar()清除,另一种是通过一个fflush(stdin)清除
在这里插入图片描述
在这里插入图片描述
OK

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值