也谈谈scanf 用法(寒假c语言之一)

 今天把老师安排的要写书的程序拿出来看了看 前几章很简单  就随便写了一个 小程序也就是判断一下输入的字符,然后输出结果,

当我用scanf接受输入的字符时却发现 当我接收第一个字符后后面的字符都不能正常的接受,后来查过资料才发现 很多系统对scanf函数处理都有漏洞, 当你输入几个变量后 可能输入缓冲区不会被清除 这样就不会出现再有提示你输入字符了 解决方法很简单 只要在每次输入结束后 加上fflush(stdin) 就可以清除缓冲,注意这时要加上头文件 stdio.h,

作为一个好学的银 我又继续看了一下网上其他关于scanf函数的讲解 有几篇写的不错 可以看一下

http://dev.csdn.net/article/21/21680.shtm

 

主要的就是对缓冲区的处理带来的问题 以及 用其读字符串使用【】控制字符的高级应用(好用),还有就是下面几个:

 如果格式控制串中有非格式字符则输入时也要输入该非格式字符 也就是说当你在scanf中有,=号这些非格式字符时在你输入过程中你也要输入他们。

在输入字符数据(%c)时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。 就是说当你连续输入几个字符串时如果格式控制串中没有,空格的话 则在你输入这些字符时注意连续输入

可以在格式化字符串中的"%"各格式化规定符之间加入一个整数,表示任何读操作中的最大位数。

scanf没有精度控制,使用地址接受

scanf函数执行成功时的返回
值为成功读取的变量数,如果第一个变量的读取即告失败则返回值为0.

撇开scanf的种种缺点 系统漏洞较多,麻烦之外,有些特殊情况下使用一些特殊的特性还是很有效果的!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值