printf函数解析
发布日期:2021-05-14 09:01:52 浏览次数:20 分类:精选文章

本文共 3791 字,大约阅读时间需要 12 分钟。

函数参考

<stdio.h>
    int printf ( const char * format, ... );

功能概述

将格式化字符串中的指定占位符用相应的数据替换到标准输出流中。占位符按照顺序依次替换,因此所需的额外参数必须与占位符数量相匹配。
format
要写入标准输出的内容。可以包含嵌入的格式占位符,可被后续参数替换。
占位符格式为:
%[flags][width][.precision][length]specifier
具体Ocean-specifier定义了输出的类型和值的解释规则。
额外参数
依据
format字符串中占位符的数量提供相应的参数。每个参数对应一个占位符。
成功时返回写入输出的总字符数,失败返回负值。

占位符规范

占位符 输出类型 示例
c 字符 a
d or i 有符号整数 392
e 科学计数法( mantissa/exponent) 3.9265e+2
E 科学计数法( mantissa/exponent)(大写E) 3.9265E+2
f 浮点数 392.65
g 较短的%e%f格式 392.65
G 较短的%E%f格式 392.65
o 无符号八进制 610
s 字符串 sample
u 无符号整数 7235
x 无符号十六进制整数 7fa
X 无符号十六进制整数(大写) 7FA
p 指针地址 B800:0000
n 无输出计数
% 单个%字符 %

占位符标志

标志 说明
- 左对齐(默认右对齐)
+ 强制在正数前添加+号
(space) 如果没有符号,添加空格。
# oxX表示:非零时添加前缀(0、0x、0X);
uels:对于eEf,强制写出小数点,即使没有小数位;对于gG,始终保留小数点,不去除尾随零。
0 用0填充宽度(如width指定的宽度)。

宽度规范

宽度 说明
(number) 输出的字符数下限。如果输出内容短于这个数值,将用空格填充。内容不会被截断。
* 宽度由前的一个额外参数指定,不在format字符串中。

精度规范

精度 说明
.number 对于整数类型:指定必须输出的最小数字个数。如果内容短于这个数值,则用0填充。

对于浮点数或其他类型,精度可能有不同的含义: .* 精度由前一个额外参数指定,不在format字符串中。

长度规范

长度 说明
h 视为短整数或长整数(仅对整数类型有效)。
l 视为长整数或长字符(长整数对cs有效)。
L 视为长双(仅适用于浮点类型)。

示例代码

#include
int main() {
printf("字符:%c %c\n", 'a', 65);
printf("十进制:%d %ld\n", 1977, 650000L);
printf("左对齐:%10d\n", 1977);
printf("左边补零:%010d\n", 1977);
printf("不同基数:%d %x %o %#x %#o\n", 100, 100, 100, 100, 100);
printf("浮点数:%4.2f %+.0e %E\n", 3.1416, 3.1416, 3.1416);
printf("宽度控制:%*d\n", 5, 10);
printf("字符串:%s\n", "A string");
return 0;
}
由于
printf函数的行为可能因平台而异,请确保使用符合实际的编译环境配置。
上一篇:单片机、嵌入式ARM学习网站推荐(多年的积累)
下一篇:C语言数组与指针详解

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2025年04月27日 03时11分12秒