论scanf函数和gets函数的微妙关系

**

scanf函数和gets函数的详细介绍在前面大神的博客中都有了,我就不多说了。我想讲的是关于这两个函数应用中会出现的一些问题,知道的可以略过哈

**
本人刚入程门,学的不多,在此分享一下自己学习中遇到的问题。
相信很多新手会遇到向我这样的问题:先输入一个数字,接下使用gets来输入相对应的字符串,前面的数字只是标识的作用,这样运行时却出现了问题,一个数字后键入回车,却没有字符串的输入时间,即输入回车后即已经跳过了gets函数。
我们从键盘输入的数据最开始是存在键盘缓冲区(这里不清楚的同学自己看大神博客吧)当中,还未被scanf函数读入,几乎所有的计算机都是以这样一种机制键入数据的,这样可以让你对输入的错误数据有修改的机会,因为你可以对键盘缓冲区中的进行擦除和写入。因此必须有一个结束符来停止输入,并转换控制流,那么这个结束符就是万能的回车。
回车在这里的作用就是将输入的数据进入内存中进而被cpu读取。
大家知道gets函数的结束也是用回车但不会读入回车符,这样的话这微妙的关系就体现出来了。当你将这俩放在一起的时候,当然scanf在前,他们俩总是不离不弃,一个回车就私奔,根本不知道跑哪儿去了。这时你可能会想到getchar函数,不用说,这是他(scanf函数)二老婆,一样的,所以在进行这样输入的时候就要小心了,别被这小两口给骗了。现在本人学的较少,尚不可知scanf后宫的庞大,待日后慢慢探索吧
谨记,别把这两个函数一前一后放在一起,否则,后果自己体会吧。
可能有人会说现在都C11标准gets函数已经不复存在了,但本人使用的还是九几年的老物,就不说了啊。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值