C语言中用来实现输出和输入的函数主要是 printf函数
和 scanf函数
。这两个函数是格式输入输出函数,使用时必须指定输入输出的格式(根据数据的不同类型指定不同的格式)。
输入函数
待总结。
输出函数 printf(格式控制,输出表列)
printf函数
括号内包含两个部分:格式控制以及输出表列。
格式控制
“格式控制”
是用双撇号括起来的格式控制字符串。它包括:
- 格式声名:由
%
和格式字符
组成,如%d
、%f
等等。其作用为将输入的数据转换为指定格式后输出。 - 普通字符:为在输出时原样输出的字符。
输出表列
程序需要输出的的一些数据,可以为常量、变量或表达式。
格式字符
d 格式字符
用来输出一个有符号的十进制整数。输出时按十进制整型数据的实际长度输出,正数的符号不输出。
输出长整型用 ""%ld"
,输出双长整型用 "%lld"
。
注:可以在格式声名中指定输出数据的域宽(所占的列数),如用 "%5d"
,指定输出数据占 5 列,输出的数据占 5 列区域的右侧。
f 格式符
用来输出实数(包括单、双精度、长双精度),以小数形式输出。
基本型 %f
系统根据数据的实际情况决定数据所占列数(实数的整数部分全部输出,小数部分输出六位)。
指定数据宽度和小数位数 %m.nf
输出的数据 占 m 列,其中包括 n 位小数
。对其最后一位采取四舍五入方法处理。
如果将小数部分指定为零,那么只会输出整数部分,小数点不会输出。
注:一个双精度数只能保证 15 位有效数字的精确度,故而如果指定 n 为很大的数,那么不能保证输出的小数部分都是有效的数字。
float 型数据
的存储单元只能保证 6 位有效数字,double 型数据
只能保证 15 位的有效数字。
输出的数据向左对齐 %-m.nf
其形式作用与 %m.nf
基本一致,不同的是当数据长度不超过 m
时,数据是向左靠,右端补空格。
c 格式符
用来输出一个字符。
char ch='a';
printf("%c",ch);
输出结果:
a
其也可以指定域宽,如 %5c
。
一个整数,如果在 0~127
范围内,可以用 %c
格式输出,输出前整数会作为 ASCII码
转换为相应字符。
s 格式符
用来输出一个字符串。
printf("%s","HELLO");
输出结果:
HELLO
e 格式符
指定以指数形式 输出实数。
当未指明数据所占宽度和数字部分的小数位数时,许多编译系统会自动指定小数部分占六位,指数部分占 5 列(如 e-003
,其中 ”e
“ 与 ”指数符号 -
“ 各占一列,指数占了三列)。数值按标准化指数形式输出:小数点前必须有且仅有一位非零数字。
printf("%e",123.456);
输出结果:
1.234560e+002
用 %m.ne
指定:
printf("%11.2e",123.456);
输出结果:
1.23e+002 // 数前面有两个空格
e
也可以写成 E
,此时输出数据中的 e
会变成 E
。
其它格式符
i格式符
。作用与d 格式符
相同,但一般习惯用%d
。o 格式符
。以八进制整数形式输出。输出的数据不带符号,符号位也会作为八进制的一部分输出。x 格式符
。以十六进制数形式输出整数。u 格式符
。用以输出无符号型数据,以十进制整数形式输出。g 格式符
。用来输出浮点数,系统自动选f
或e
格式输出,择两者中长度较短的格式输出,不输出无意义的零。% 附加字符 格式字符
。附加字符如l
、m
、n
、-
等,又称为修饰符,起补充说明的作用。