C语言学习笔记___数据的输入与输出(二)
一.使用scanf函数输入数据
- scanf函数的一般形式
scanf(格式控制,地址表列)
“格式控制”的含义同printf函数。“地址表列”是由若干个地址组成的表列,可以是变量的地址,或字符串的首地址。
2.scanf 函数中的格式声明
与printf函数中的格式声明相似,以%开始,以一个格式字符结束,中间可以插入附加的字符。
格式字符 | 说明 |
---|---|
d,i | 输入有符号的十进制整数 |
u | 输入无符号的十进制整数 |
o | 输入有符号的八进制整数 |
x,X | 输入无符号的十六进制整数(大小写作用相同) |
c | 输入单个字符 |
s | 输入字符串,将字符串送到一个字符数组中,在输入时以非空白字符开始,以第一个空白字符结束, |
f | 输入实数,可以用小数形式或指数形式输入 |
e,E,g,G | 与f作用相同,e与f,g可以互相替换(大小写作用相同) |
l | 输入长整型数据(可用%ld,%lo,%lx,%lu)以及double型数据(用%lf或%le) |
h | 输入短整型数据(可用%hd,%ho,%hx) |
域宽 | 指定输入数据所占宽度(列数),域宽应为正整数 |
* | 本输入项在读入后不赋给相应的变量 |
这两个表是为了备查用的,不必四级。开始时会用比较简单的形式输入数据即可。
3.使用scnaf函数时应注意的问题
(1).scanf函数中的格式控制后面应当是变量地址,而不是变量名。例如,若a和b为整形变量,如果写成
scanf("%f%f%f",a,b,c); 这样是 不对的,应将“a,b,c”改成“&a,&b,&c”;
(2).如果在格式控制字符串中除了格式声明以外还有其他字符,则在输入数据时在对应的位置上应输入与这些字符相同的字符,如果有
scanf("a=%f,b=%f,c=%f",&a,&b,&c);
在输入数据时,应在对应的位置上输入相同的字符,即输入
a=1,b=3,c=2
如果输入
1 3 2 ,这样就错了
需要注意的是,在"a=1"的后面输入一个逗号,它与scanf函数中的“格式控制”中的逗号对应,如果输入时不用逗号而用空格或其他字符是不对的。
(3).在用"%c"格式声明输入字符时,空格字符和"转义字符"中的字符都作为有效字符输入,例如:
scanf("%c%c%c",&c1,&c2,&c3);
在执行此函数时应该连续输入三个字符,中间不要有空格,如: abc
若在两个字符中间穿插空格就不对了 ,如a b c
(4).在输入数值数据时,如输入空格、回车、Tab键或遇非法字符(不属于数值的字符),认为该数据结束,例如:
scanf("%d%c%f",&a,&b,&c);
若输入
1234a123o.26
则1234对应a,a对应b,123对应c
二.字符输入输出函数
除了可以用printf函数和scanf函数输出和输入字符之外,C函数库还提供了一些专门用于输入和输出字符的函数。它们是很容易理解和使用的。
2.1用putchar函数输出一个字符
putchar函数的一般形式为:
putchar©
putchar是put character(给字符)的缩写,很容易记忆。C语言的函数名大多是可以见名知义的,不必死记。putchar(c)的作用是输出字符变量C的值,显然输出的是一个字符。
#include <stdio.h>
#include <stdlib.h>
int main()
{
char a='B',b='O',c='Y';
putchar(a);
putchar(b);
putchar(c);
putchar('\n');
system("pause");
return 0;
}
运行结果:
从此例子可以看出,用putchar函数可以输出能在显示屏屏幕上显示的字符,也可以输出屏幕控制字符,如putchar(’\n’)的作用是输出一个换行符,使输出的当前位置移到下一行的开头。
如果把上面的程序改成以下内容:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a=66,b=79,c=89;
putchar(a);
putchar(b);
putchar(c);
putchar('\n');
system("pause");
return 0;
}
运行结果为:
从前面的介绍已知,字符类型也属于整形类型,因此将一个字符赋给字符变量和将字符的ASCII代码赋给字符变量作用是完全相同的(需注意的是整形数据的范围为0~127)。
putchar函数是输出字符的函数,它输出的是字符而不能输出整数,66是字符B的ASCII代码。
putchar©中的c可以是字符常量、整形常量、字符变量或整形变量(其值在字符的ASCII代码范围内)。
2.2用getchar函数输入一个字符
getchar函数的一般形式为
getchar()
例:从键盘输入BOY三个字符,然后把它们输出到屏幕。
#include <stdio.h>
#include <stdlib.h>
int main()
{
char a,b,c;
a=getchar();
b=getchar();
c=getchar();
putchar(a);
putchar(b);
putchar(c);
putchar('\n');
system("pause");
return 0;
}
运行结果:
注意,在连续输入BOY并按Enter键后,字符才送到计算机中,然后输出BOY三个字符。
在用键盘输入信息时,并不是在键盘上敲一个字符,该字符就立即送到计算机中去。这些字符先暂存在键盘的缓冲器中,只有按了Enter键才把这些字符一起输入到计算机中,然后按先后顺序分别赋给相应的变量。
如果在运行时,没输入一个字符后马上按Enter键,会得到的结果为:
输入字符B后马上按Enter,再输入字符O,按Enter,立即会分两行输出B和O;
执行getchar函数不仅仅可从输入设备获得一个可显示的字符,而且可以获得在屏幕上无法显示的字符,如控制符,例:
#include <stdio.h>
#include <stdlib.h>
int main()
{
putchar(getchar());
putchar(getchar());
putchar(getchar());
putchar('\n');
system("pause");
return 0;
}
结果为:
需要注意的是,不要再按B后马上按回车键,这样就会把回车也作为一个字符输入。