C语言基础学习笔记(2):格式化输入与输出
图:乞力马扎罗山(Kilimanjaro)
Guderian出品
C
语言格式化屏幕输出:printf(格式控制字符串, 输出值参数表);
C
语言格式化屏幕输入:scanf(格式控制字符串, 输入地址表);
问题:
printf()
用%
作为格式字符的标识,那么如何输出%
呢?C
规定,连续两个百分号出现在格式控制字符串中就表示要输出一个百分号如何分隔多个输入数据?
1)空格、
Tab
或回车2)达到输入位宽
3)遇到非法字符
如何判断
scanf()
函数读入了正确的数据项数呢?事实上,
scanf()
是有返回值的,它的返回值就是正确读入的数据项数。现在明白while(scanf(...))
为什么正确了吧?scanf()
格式控制字符串中的普通字符原样输入。注意格式字符为%f, %e
为输入float
型且不能指定精度,格式字符为%c
为一个字符包括空白字符(如空格和制表符)。scanf()
格式修饰符字符型常量:所有的
ASCII
码都可以通过转义方式表示,其中\ddd
为1
到3
位八进制ASCII
码值所代表的字符,\xhh
为1
到2
为十六进制ASCII
码值所代表的字符。如:'B'
等价于'\102'
等价于'\x42'
。大小写英文字母的
ASCII
值相差32
,即大写字母+32=小写字母
。单个字符的输入输出:
putchar(ch)
:向屏幕输出一个字符,字符型变量ch
的值ch = getchar()
:从键盘接受的字符作为getchar()
的函数值,无参数用
getchar()
输入时应注意的问题:getchar()
函数并不是直接读取用户输入的字符,而是将输入字符先放在输入缓冲队列中,再从缓冲队列读取字符,直到输入回车符或文件结束符EOF
时,程序才认为输入结束;一行输入结束,getchar()
才开始从输入缓冲队列读取字符,前面函数没读取的数据仍在缓冲队列中,将被下一个getchar()
函数读取。在
Linux/Unix
下键入Ctrl + D
或在Windows
下键入Ctrl + Z
,getchar()
函数的确是会返回-1
即EOF
(End Of File
)的,严格意义上应该用int
类型来接收getchar()
的返回值。注意用
%c
格式读入字符时,空格和回车等空白字符都会被当做有效字符读入,在%c
前加一个空格可以忽略缓冲区中的空白字符。
【更多C语言系列】