3.2 数据的输入与输出
在程序的运行过程中,往往需要由用户输入一些数据,而程序运算所得到的计算结果等又需要输出给用户,由此实现人与计算机之间的交互,所以在程序设计中,输入输出语句是一类必不可少的重要语句,在C语言中,没有专门的输入输出语句,所有的输入输出操作都是通过对标准I / O库函数的调用实现。最常用的输入输出函数有scanf( )、pri ntf( )、getchar( )和putchar( ),以下分别介绍。
3.2.1 scanf()函数
格式化输入函数scanf( )的功能是从键盘上输入数据,该输入数据按指定的输入格式被赋给相应的输入项。函数一般格式为:
scanf( "控制字符串",输入项列表);
其中控制字符串规定数据的输入格式,必须用双引号括起,其内容是由格式说明和普通字符两部分组成。输入项列表则由一个或多个变量地址组成,当变量地址有多个时,各变量地址之间用逗号“,”分隔。
scanf( )中各变量要加地址操作符,就是变量名前加“ &”,这是初学者容易忽略的一个问题。应注意输入类型与变量类型一致。
下面探讨控制字符串的两个组成部分:格式说明和普通字符。
1. 格式说明
格式说明规定了输入项中的变量以何种类型的数据格式被输入,形式是:
% [ ]
各个格式字符及其意义见表3 - 1。
表3-1 输入格式字符
格式字符 意义
d 输入一个十进制整数
o 输入一个八进制整数
x 输入一个十六进制整数
f 输入一个小数形式的浮点数
e 输入一个指数形式的浮点数
c 输入一个字符
s 输入一个字符串
各修饰符是可选的,可以没有,这些修饰符是:
⑴ 字段宽度
例如:scanf("%3d",&a)
按宽度3输入一个整数赋给变量a。
⑵ l和h
可以和d、o、x一起使用,加l表示输入数据为长整数,加h表示输入数据为短整数,例如:
scanf("%10ld % hd" , &x , &i)
则x按宽度为1 0的长整型读入,而i按短整数读入。
⑶ 字符*
*表示按规定格式输入但不赋予相应变量,作用是跳过相应的数据。
例如:
scanf("%4d % *d % 4d" , &x , &y , &z)
执行该语句,若输入为“1 2 3”
结果为x = 1,z = 3,y未赋值,2被跳过。
2. 普通字符
普通字符包括空格、转义字符和可打印字符。
(1) 空格
在有多个输入项时,一般用空格或回车作为分隔符,若以空格作分隔符,则当输入项中包含字符类型时,可能产生非预期的结果,例如:
scanf("%d %c" , &a , &ch)
输入32q
期望a = 32,ch = q,但实际上,分隔符空格被读入并赋给ch。
为避免这种情况,可使用如下语句:
scanf("%d %c" , &a , &ch)
此处% d后的空格,就可跳过字符“ q”前的所有空格,保证非空格数据的正确录入。
(2) 转义字符: \n、\t
先看下面的例子:
scanf("%d %d" , &a , &b);
scanf("%d %d %d" , &x , &y , &z);
输入为1 2 3
4 5 6
结果为:a = 1, b = 2, x = 3, y = 4, z = 5
若将上述语句改为:
scanf("%d %d\n" , &a , &b);
scanf("%d %d %d" , &x , &y , &z);
对同样的输入,其结果为a = 1,b = 2,x = 4,y = 5,z = 6,由于在第一个scanf的最后有一个\n,所以第二个scanf语句将从第二个输入行获得数据。
(3) 可打印字符
例如:scanf("%d,%d,%c",&a,&b,&ch);
当输入为: 1, 2, q
即:a = 1,b = 2,ch = q
若输入为1 2 q
C语言程序设计(第3章程序控制语句)2.doc
下载Word文档到电脑,方便收藏和打印[全文共1519字]
编辑推荐:
下载Word文档