学着学着好像忘记了好多知识, 回想一哈,原来不是自己忘记了而是自己从来没有认真的看过,用过。只有等到用的时候才去百度一下。有时候用到去百度又会太浪费时间,所以现在纪录一下,方便自己的使用。
printf函数原型如下:
int printf(const char* format,…);
其中format表示两部分内容:
- 正常字符,直接输出
- 格式化字符以 “%”开始,用来表示输出内容格式。
格式化字符串的模板是:%[输出标志][输出最小宽度][.小数点位数][长度]类型
其中输出标志:
符号 | 含义 |
---|---|
“-” | 左对齐 |
“+” | 右对齐 |
“ ” | 空格,符号为正显示空格,为负显示负号“-” |
“#” | 对c,s,d,u无影响,对o类输出前加缀为o,对x类,在输出前缀加0x,对e,g,f当结果有小数时给出小数点 |
最小宽度 m:实际长度大于m时按照实际输出,实际长度小于m时,无标志则左边填充空格。若为“%-md”则右边填充到m长度为止。
小数点:
“%m.nf”: 输出浮点数,m为宽度,n为小数点右边数位
“%m.ns”: 输出m位,取字符串(左起)n位,左补空格,当n>m or m省略时m=n
长度:h为短整型,l为长整型
类型:
格式 | 含义 |
---|---|
%a,%A | 浮点数、十六进制数字和p-计数法 |
%c | 一个字符 |
%C | 一个ISO宽字符 |
%d | 有符号十进制整数(int)(%ld ,%Ld为:长整型数据,%hd:短整型数) |
%e,%E | 浮点数,e-计数法,E-计数法 |
%f | 单精度浮点数 |
%g,%G | 根据数值不同自动选择%f或%e |
%i | 有符号十进制数(与%d相同) |
%o | 无符号八进制整数 |
%p | 指针 |
%s | 对应字符串char*(%s = %hs = %hS 输出 窄字符) |
%S | 对应宽字符串WCAHR*(%ws = %S 输出宽字符串 |
%u | 无符号十进制整数(unsigned int) |
%x,%X | 使用十六进制数字0xf的无符号十六进制整 |
%% | 打印一个%号 |
%I64d | 用于int64 或者 long long |
%I64u | 用于uint64 或者unsigned long long |
%I64x | 用于64 位16进制数字 |