C教程-----输入输出函数及控制流程语句(1)(2)

文章作者 100test 发表时间 2007:03:10 17:17:24
来源 100Test.Com百考试题网


上面结果中的地址值在不同计算机上可能不同。
例1.中第一条语句#include的含义是调用另一个文件stdio.h, 这
是一个头文件, 其中包括全部标准输入输出库函数的数据类型定义和函数说明。
Turbo C2.0对每个库函数便用的变量及函数类型都已作了定义与说明, 放在相应
头文件"*.h"中, 用户用到这些函数时必须要用#include<*.h>或#include"*. h"
语句调用相应的头文件, 以供连接。若没有用此语句说明, 则连接时将会出现错
误。
二、scanf()函数
scanf()函数是格式化输入函数, 它从标准输入设备(键盘) 读取输入的信息。
其调用格式为:
scanf("<格式化字符串>", <地址表>).
格式化字符串包括以下三类不同的字符.
1. 格式化说明符: 格式化说明符与printf()函数中的格式说明符基本相同。
2. 空白字符: 空白字符会使scanf()函数在读操作中略去输入中的一个或多
个空白字符。
3. 非空白字符: 一个非空白字符会使scanf()函数在读入时剔除掉与这个非
空白字符相同的字符。
地址表是需要读入的所有变量的地址, 而不是变量本身。这与printf()函数
完全不同, 要特别注意。各个变量的地址之间同","分开。
例2:
main()
{
int i, j.
printf("i, j=? ").
scanf("%d, %d", &.i, &.j).
}
上例中的scanf()函数先读一个整型数, 然后把接着输入的逗号剔除掉, 最
后读入另一个整型数。如果","这一特定字符没有找到, scanf()函数就终止。若
参数之间的分隔符为空格, 则参数之间必须输入一个或多个空格。
说明:
(1). 对于字符串数组或字符串指针变量, 由于数组名和指针变量名本身就
是地址, 因此使用scanf()函数时, 不需要在它们前面加上"&."操作符。
例3
mian()
{
char *p, str[20].
scanf("%s", p). /*从健盘输入字符串*/
scanf("%s", str).
printf("%s ", p). /*向屏幕输出字符串*/
printf("%s ", str).
}

(2). 可以在格式化字符串中的"%"各格式化规定符之间加入一个整数, 表示
任何读操作中的最大位数。
如例3中若规定只能输入10字符给字符串指针p, 则第一条scanf() 函数语句
变为
scanf("s", p).
程序运行时一旦输入字符个数大于10, p就不再继续读入, 而后面的一个读
入函数即scanf("%s", str)就会从第11个字符开始读入。
实际使用scanf()函数时存在一个问题, 下面举例进行说明:
当使用多个scanf()函数连续给多个字符变量输入时, 例如:
main()
{
char c1, c2.
scanf("%c", &.c1).
scanf("%c", &.c2).
printf("c1 is %c, c2 is %c", c21, c2).
}

运行该程序, 输入一个字符A后回车 (要完成输入必须回车), 在执行scanf
("%c", &.c1)时, 给变量c1赋值"A", 但回车符仍然留在缓冲区内, 执行输入语句
scanf("%c", &.c2)时, 变量c2输出的是一空行, 如果输入AB后回车, 那么输出结
果为: c1 is A, c2 is B。
要解决以上问题, 可以在输入函数前加入清除函数fflush()( 这个函数的使
用方法将在本节最后讲述)。修改以上程序变成:
#include
main()
{
char c1, c2.
scanf("%c", &.c1).
fflush(stdin).
scanf("%c", &.c2).
printf("c1 is %c, c2 is %c", c1, c2).
}


相关文章


湖北:在职人员如何报考计算机等级考试
山东:青岛计算机等级考试12月18日至12月24日报名
C教程-----输入输出函数及控制流程语句(1)(2)
C教程-----输入输出函数及控制流程语句(1)(1)
辽宁:2003年11月全国计算机考试成绩5日开始查询
江西:2004年计算机等级、全国英语等级考试开始报名
06年必备版二级考试(第四套)模拟题
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛