本篇将重点介绍C语言的格式化输出函数 printf 和格式化输入函数 scanf 。当然该函数在C++程序中也可以使用。
目录
printf 函数构成及标准函数语句
printf ( 格式控制,输出表列 )
这里格式控制指又包含了格式说明和普通字符。格式说明多用于变量,以 %+格式字符 的形式,表示按照格式输出;普通字符就按照原样输出即可。
这里要注意的是,转义符在格式控制中作为普通字符,输出的是转义符转义后的字符。(如 \x21 输出的就是感叹号 !,\n 输出的就是换行)
输出表列指真正输出的数据,这个数据可以是变量、常量,也可以是表达式或是函数等。
举个栗子:
int a=10; printf("%dxX\n",a);
这段代码中 "%dxX\n" 就是格式控制,其中%d是一个格式说明,说明了这里要输出的一个数据的格式是十进制整数(格式字符 d 表示带符号的十进制整数,有关内容后面会重点说明),而后面的xX是两个普通字符,\n 属于普通字符表示换行。输出表列中的 a 与格式控制中的 %d 对应,所以在 %d 位置的实际输出就是这个 a 表示的数字10
最终输出为:
10xX
(还有一个空行)
格式字符种类的介绍
格式字符分为两种基本格式字符和附加格式字符。基本格式字符如下表:
d,i | 带符号的十进制形式整数(符号带-,整数不带+) |
o | 八进制无符号形式输出整数(不带前导0,因为只输出最基本的内容) |
x,X | 十六进制无符号形式输出整数(不带前导0x) |
u | 十进制无符号形式输出整数 |
c | 字符形式输出(一个字符) |
s | 输出一个字符串 |
f |
以小数形式输出浮点数 |
e,E | 以指数形式输出浮点数(科学计数法) |
g,G | 在 f , e 中选择宽度较短的形式输出浮点数 |
可以用以下代码加以验证:
int m = 10;
printf("%d %o %x %u\n", m, m, m, m);
//输出:10 12 a 10
double b = 3.1415;
printf("%f %e %g\n", b, b,b);
//输出:3.141500 3.141500e+00 3.1415
char s[] = "abcd";
char c = '*';
printf("%s %c\n", s, c);
//输出:abcd *
除此以外,printf 函数还具有一些附加格式字符,具体如下表: