练习3:格式化输出
-
找到尽可能多的方法使
ex3
崩溃。
无厘头??直接printf写成print -
执行
man 3 printf
来阅读其它可用的'%'格式化占位符。如果你在其它语言中使用过它们,应该看着非常熟悉(它们来源于printf
)。
常见的printf
格式化占位符
-
%d
或%i
:- 用于输出有符号十进制整数。
- 例子:
printf("%d", 42);
输出42
。
-
%u
:- 用于输出无符号十进制整数。
- 例子:
printf("%u", 42);
输出42
。
-
%f
:- 用于输出浮点数(小数形式)。
- 例子:
printf("%f", 3.14);
输出3.140000
。
-
%e
或%E
:- 用于以科学计数法输出浮点数。
%e
使用小写的e
,而%E
使用大写的E
。 - 例子:
printf("%e", 3.14);
输出3.140000e+00
。
- 用于以科学计数法输出浮点数。
-
%g
或%G
:- 根据数值的大小,自动选择使用
%f
或%e
(%E
)来输出浮点数。%g
使用小写,%G
使用大写。 - 例子:
printf("%g", 3.14);
输出3.14
。
- 根据数值的大小,自动选择使用
-
%x
或%X
:- 用于输出无符号十六进制整数。
%x
使用小写字母,%X
使用大写字母。 - 例子:
printf("%x", 255);
输出ff
,printf("%X", 255);
输出FF
。
- 用于输出无符号十六进制整数。
-
%o
:- 用于输出无符号八进制整数。
- 例子:
printf("%o", 255);
输出377
。
-
%c
:- 用于输出单个字符。
- 例子:
printf("%c", 'A');
输出A
。
-
%s
:- 用于输出字符串(以
\0
结尾的字符数组)。 - 例子:
printf("%s", "Hello, world!");
输出Hello, world!
。
- 用于输出字符串(以
-
%p
:- 用于输出指针(内存地址)。
- 例子:
int x = 42; printf("%p", &x);
输出指针地址,如0x7ffeefbff5c4
。
-
**
");
输出%
。
可选标志、宽度和精度
在%
之后,格式化占位符还可以包含以下内容:
-
标志:
-
:左对齐。+
:总是显示符号(包括正号)。0
:在数字左侧填充0
而不是空格。#
:对于%o
、%x
、%X
,显示前缀0
或0x
。
-
宽度:
- 指定最小输出宽度,数据不足时填充空格。
-
精度:
- 对于浮点数,指定小数点后的数字。
- 对于字符串,指定输出的最大字符数。
-
将
ex3
添加到你的Makefile
的all
列表中。到目前为止,可以使用make clean all
来构建你所有的练习。
-
将
ex3
添加到你的Makefile
的clean
列表中。当你需要的时候使用make clean
可以删除它。