scanf 函数的使用
2017-06-15 21:43
169 查看
一、输入单个数据
举个栗子:二、输入多个数据
1.默认的数据分割符
多个数据之间的分割符默认为:回车符 或 制表符 或 空格符对于下面的语句:
输入时,三个整数之间的间隔是上面三种分割符的任意一种。
2.指定数据的分割符
a.如果指定的分割符是默认的三种分割符,则和没有指定效果一样。b.如果是其他的分割符,输入时必须输入指定分割符
如下面的四条语句所示:
下面的三条语句和第一条语句的执行效果一样。
如下面的语句所示:
指定了第一个数据和第二个数据之间用 “,”分割,第二个数据和第三个数据之间用字符 “a” 分割。
则输入时,需要按照下面的格式输入数据。
3.指定数据的输入宽度
输入数据达到指定宽度时, scanf函数认为该数据输入完成。如下面的代码所示:
输入数据时,按照如下的格式输入:
4.遇到非法输入时的处理
当输入的数据非法时,scanf会结束当前参数输入。如下面的代码所示:
按照如下的方式输入:
当输入字符“a”时,scanf函数会认为第一个整型的参数输入完毕。
三、输入结束的判断
满足下面条件时,输入回车后,结束scanf的输入。1. 当输入的参数个数已经到达scanf要接收的参数个数。
2. 分割符不是默认的三种分隔符:回车符 或 制表符 或 空格符
3. 输入的数据, 对于所有的参数都是非法字符
举个栗子:
四、特殊的“%c”
当scanf函数的参数是%c的时候,scanf函数会把缓冲区的第一个字符返回回去,不管是什么。(不管是回车符 或 空格符 或 其他的任何字符)五、字符串输入
举个栗子:六、“垃圾回收”
最后输入的回车,会残留在操作系统的输入缓冲区中,影响下一次的输入。如下面的代码所示:
输入时,当输入完123,按下回车后,直接执行到了打印输出的语句。程序并没有等待我们输入字符 。原因是:123被接收至变量 a 中,而 ‘\n’ 被接收至变量 c 中。
上述问题的解决办法是:添加一条 getchar(); 语句。去掉缓冲区中的 ‘\n’ 。
七、分割符结尾
以默认的分割符结尾,scanf会认为参数输入还没有完成,继续等待输入。所以不要用这样的格式结尾。
举个栗子:
当输入完数字5.1,按下回车时,scanf函数并没有返回,需要再多输入一个数据,scanf函数才会退出。
相关文章推荐
- c语言 scanf 函数使用详解
- scanf()函数使用详解
- 使用scanf()函数接收带空格的字符串
- 解决visual studio里面的scanf函数无法使用的问题
- 关于vs2013等编译器scanf函数不能使用的问题
- gets、scanf 、read函数使用注意事项
- 使用scanf()函数应注意的问题??
- 详解C语言中scanf函数使用的一些注意点
- C语言使用scanf函数获取数据后,使用getchar()无法获得字符的处理方法
- scanf()函数的使用
- (VS2012)C++行输入函数的使用(scanf_s,cin.getline,cin.get)
- STM32L152RC 在keil4中使用printf()和scanf() 函数
- [C语言] 对于scanf()函数使用%d格式说明符无法读取字符的个人理解
- C语言:清空键盘缓冲区(使用scanf(),getchar()函数必读)
- 杂记之C语言之函数scanf的使用
- scanf()函数慎重使用
- scanf函数使用
- C 【printf 和 scanf 函数的使用】
- 使用scanf()函数接收带空格的字符串
- C++为什么不提倡使用scanf和printf函数