C语言自学完备手册(07)——printf()输出格式详解

版权声明: https://blog.csdn.net/lfdfhl/article/details/79825248

自定义View系列教程00–推翻自己和过往,重学自定义View
自定义View系列教程01–常用工具介绍
自定义View系列教程02–onMeasure源码详尽分析
自定义View系列教程03–onLayout源码详尽分析
自定义View系列教程04–Draw源码分析及其实践
自定义View系列教程05–示例分析
自定义View系列教程06–详解View的Touch事件处理
自定义View系列教程07–详解ViewGroup分发Touch事件
自定义View系列教程08–滑动冲突的产生及其处理


探索Android软键盘的疑难杂症
深入探讨Android异步精髓Handler
详解Android主流框架不可或缺的基石
站在源码的肩膀上全解Scroller工作机制


Android多分辨率适配框架(1)— 核心基础
Android多分辨率适配框架(2)— 原理剖析
Android多分辨率适配框架(3)— 使用指南


版权声明


printf()格式常见形式如下:

%[标志][宽度][.精度][长度]类型

各部分详解如下:

类型

类型 输出 例子
d或i 带符号十进制整形 392
u 无符号十进制整形 7235
o 无符号八进制数 610
x 无符号十六进制整形 7fa
X 无符号十六进制整形(大写) 7FA
f 十进制浮点数,小写 392.65
F 十进制浮点数,大写 392.65
e 科学计数法(尾数/指数),小写 3.9265e+2
E 科学计数法(尾数/指数),大写 3.9265E+2
g 使用最短的表示: %e 或 %f 392.65
G 使用最短的表示: %E 或 %F 392.65
a 十六进制浮点数,小写 -0xc.90fep-2
A 十六进制浮点数,大写 -0XC.90FEP-2
c 字符 a
s 字符串 sample
p 指针地址 b8000000
n 不打印。相应的参数必须是指向带符号整形的指针,到目前为止写入的字符数将被存储在指向的位置。
% 跟在一个%字符后面的另一个%将会写入一个% %

标志

标志 描述
- 在给定字段宽度内左对齐; 右对齐是默认的(见宽度子说明符)。
+ 使结果带上正负符号(+或-)即使结果是正数;默认只有负数才会有正负符号。
(space) 如果没有写入正负符号,则插入一个空格。
# 与o,x或X说明符一起使用,会在0以外的数字前加上0,0x或0X的前缀;与a,A,e,E,f,F,g或G一起使用,即使没有小数,也会强制书写输出包含一个小数点。,默认情况下,如果没有小数,则不会写入小数点。
0 在填充时,用零(0)替代空格(见宽度子说明符)。

宽度

宽度 描述
(数字) 要打印的最小字符数。如果要打印的值长度小于此数字,结果将填充空格;若值长度大于此数字,该值也不会被截断。
* 宽度在format字符串中未指定,但需要在附加参数中指定。

精度

精度 描述
.数字 对于整数类型(d,i,o,u,x,X):精度指定要写入的最小位数:如果要写入的值比此数字短,结果将以前导零填充;即使结果较长,该值也不会被截断;精度为0表示对于值0,没有字符被写入。对于a,A,e,E,f和F类型:这是小数点后要打印的位数(默认为6)。对于g和G类型:这是要打印的有效数字的最大数量。对于s类型:这是要打印的最大字符数; 默认情况下将打印所有字符,直到遇到结尾的空字符为止。如果指定精度时没有一个明确的精度值,则假定为0。
.* 在format字符串中未指定精度,但需要在附加参数中指定。

长度

长度 d i u o x X f F e E g G a A c s p n
(none) int unsigned int double int char* void* int*
hh signed char unsigned char signed char*
h short int unsigned short int short int*
l long int unsigned long int wint_t wchar_t* long int*
ll long long int unsigned long long int long long int*
j intmax_t uintmax_t intmax_t*
z size_t size_t size_t*
t ptrdiff_t ptrdiff_t ptrdiff_t*
L long double

注意事项:

  • 对于c类型:它使用了一个int(或wint_t)作为参数,但是在将其格式化为输出之前,将其转换成为了char值(或wchar_t)

  • 加粗并斜体的符号属于C99标准


示例代码

#include <stdio.h>

int main()
{
   printf ("Characters: %c %c \n", 'a', 65);
   printf ("Decimals: %d %ld\n", 1977, 650000L);
   printf ("Preceding with blanks: %10d \n", 1977);
   printf ("Preceding with zeros: %010d \n", 1977);
   printf ("Some different radices: %d %x %o %#x %#o \n", 100, 100, 100, 100, 100);
   printf ("floats: %4.2f %+.0e %E \n", 3.1416, 3.1416, 3.1416);
   printf ("Width trick: %*d \n", 5, 10);
   printf ("%s \n", "A string");
   return 0;
}

运行结果

Characters: a A 
Decimals: 1977 650000 
Preceding with blanks: 1977 
Preceding with zeros: 0000001977 
Some different radices: 100 64 144 0x64 0144 
floats: 3.14 +3e+000 3.141600E+000 
Width trick: 10 
A string

参考资料

本文重要参考资料:http://www.cplusplus.com/reference/cstdio/printf/

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页