1、输入和输出:
输入:输入也叫读,数据由内核流向用户程序
输出:输出也称写、打印,数据由用户程序流向内核
以下介绍一些输入输出函数,尽管都是一些有缺陷的函数,但比较适合初学者使用
2、printf用法(其缺陷在于带缓存)
printf输出时必须加上\n(刷新缓存)
解释:第一幅图没有加'\n',不会刷新缓存区,则不会打印出来;第二幅图是因为主函数结束时刷新了缓存区,但由于没有换行符,所以没有换行便显示了后面的内容;第三幅图时正常打印。
变量定义的是什么类型,在printf打印时就需要选择什么格式符,否则会造成数据的精度丢失(隐式强转),甚至会出现错误
修饰符
功能
m
输出数据域宽,数据长度
.n
对实数,指定小数点后位数(四舍五入)
对字符串,按指定实际输出位数
-
输出数据在域内左对齐(缺省右对齐)
+
指定在有符号数的正数前显示正号(+)
0
输出数值时指定左面不使用的空位置自动填0
#
在八进制和十六进制数前显示前导0、0x和0X
l
在d、o、x、X、u前,指定输出精度为long型
在e、f、g前,指定输出精度为double型
(1)格式输出函数的一般形式
函数原型:int printf(char * format[,argument,…]);
函数功能:按规定格式向输出设备(一般为显示器)输出数据,并返回实际输出的字符数,若出错,则返回负数。
A、它使用的一般形式为:printf("格式控制字符串",输出项列表);
B、语句中"输出项列表"列出要输出的表达式(如常量、变量、运算符表达式、函数返回值等),它可以是0个、一个或多个,每个输出项之间用逗号(,)分隔;输出的数据可以是整数、实数、字符和字符串。
C、"格式控制字符串"必须用英文的双引号括起来,它的作用是控制输出项的格式和输出一些提示信息,例如:
int i=97; printf("i=%d,%c\n",i,i);输出结果为:i=97,a
语句printf("i=%d,%c\n",i,i);中的两个输出项都是变量i,但却以不同的格式输出,一个输出整型数97,另一个输出的却是字符a,其格式分别由"%d"与"%c"来控制。
语句printf("i=%d,%c\n",i,i);的格式控制字符串中"i="是普通字符,他将照原样输出;"%d"与"%c"是格式控制符;"\n"是转义字符,它的作用是换行。
(2)格式控制
格式控制由格式控制字符串实现,格式控制字符串由3部分组成:普通字符、转义字符、输出项格式说明。
A、普通字符。普通字符在输出时,按原样输出,主要用于输出提示信息。(空格属于普通字符)
B、转义字符。转义字符指明特定的操作,如"\n"表示换行,"\t"表示水平制表等。
\n 换行
\f 清屏并换页
\r 回车
\tTab符
\xhh 表示一个ASCII码用16进表示,其中hh是1到2个16进制数
C、格式说明部分由"%"和"格式字符串"组成,他表示按规定的格式输出数据。
格式说明的形式为:% [flags] [width] [.prec] [F|N|h|l] type||%[标志][输出最少宽度][.精度][长度]类型
各部分说明如下:
a、[]表示该项为可选项,即可有可无,如printf("%d",100);
b、%:表示格式说明的起始符号,不可缺少。
c、flags为可选择的标志字符,常用的标志字符有:
- ——左对齐输出,默认为右对齐输出
+ ——正数输出加号(+),负数输出减号(-),如省略正数的+默认不显示
0 ——输出数值时指定左面不使用的空位置自动填0,如省略表示指定空位不填
# ——对c、s、d、u类无影响;对o类,在输出时加前缀0(数字0,八进制表示符);对x类,在输出时加前缀0x(字母为小写);对X类,在输出时加前缀0X(字母为大写);对e,g,f类当结果有小数时才给出小数点。
d、width为可选择的宽度指示符。
用十进制正整数表示设置输出值得最少字符个数。不足则补空格,多出则按实际输出,默认按实际输出,例如:
printf("%8d\n",100); (前面空五格)100
printf("%08d\n",100); (前面5个0)100
printf("%6d\n",100); (前面空三格)100
printf("%-8d\n",100); 100(后面空五格)
printf("