设为首页 加入收藏

TOP

2.4.4 格式化输入函数scanf
2013-10-12 06:46:01 来源: 作者: 【 】 浏览:102
Tags:2.4.4 格式 输入 函数 scanf

2.4.4  格式化输入函数scanf

格式化输入函数其一般格式为:

scanf(控制字符串,参数1,参数2,……,参数n);

它接受来自键盘的输入,自动把输入的数据转换为规定的格式并存储到由参数指定的变量中。参数必须是以变量地址的形式给出。变量的地址其实就是存储变量的内存单元的编号,第1章的1.5节已经作过介绍。运算符&用于取得变量的地址,如有一个整型变量a,则它的地址为&a。

与printf一样,scanf可以使用的格式字符如下所示。

d:期待输入一个十进制整数。

o:期待输入一个八进制整数。

x:期待输入一个十六进制整数。

u:期待输入一个无符号整数。

c:期待输入一个字符。

s:期待输入一个字符串。

f:期待输入一个浮点数。

e:期待输入一个以科学表示法的表示的浮点数。

与printf类似,可以以%ld的方式输入一个长整型,例2-10演示了格式化输入函数scanf的用法。

例2-10

#include
int main()
{
int  i;
char  c;
float  f;

scanf("%d%c%f",&i,&c,&f);
printf("%d %c %f",i,c,f);
scanf(("%d,%c,%f",&i,&c,&f);
printf("%d %c %f",i,c,f);
}

程序运行:

123 a 12.5
123 a 12.5
456,b,21.5
456 b 21.5

程序说明。

(1)程序运行,等待用户输入,这里输入123、a和12.5,之间以空格间隔,回车后程序在屏幕上打印出3个变量的值。系统怎样知道123是赋给变量i而字符a是赋给变量c的呢?当遇到空格键、制表键键时,系统认为是一个变量输入的结束。注意,在输出时,printf函数中%d、%c、%f之间有空格,空格作为普通字符在屏幕上会原样输出,所以有了第2行的打印结果。

(2)在第2次要求输入时,我们已经在程序里规定了用逗号分割,此时必须以第3行这样的方式输入,输入数据以逗号隔开。第4行打印出各个变量的值。

(3)那么如果有错误的输入,系统会有什么反映呢?在设计程序时,必须考虑到用户可能不会每次都按照软件的要求正确地输入数据,所以在设计软件时必须考虑对错误输入的处理,否则一旦用户有错误的输入,程序就崩溃了,这样的软件显然是缺乏竞争力的。如果我们在程序第一次要求输入时,输入a123a12.5,然后回车,输入的数据之间没有空格,也没有按键,会有什么结果呢?结果是系统输出一些奇怪的数。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇2.4.1 字符输出函数putchar 下一篇2.4.3 格式化输出函数printf

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: