您的位置:首页 > 其它

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函数才会退出。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  scanf函数