### C语言printf()输出格式详解 #### 一、概述 `printf()` 函数是C语言中的标准输出函数,用于格式化输出数据到标准输出设备(通常是屏幕)。它使用灵活,功能强大,支持多种数据类型的输出格式。本文档将详细介绍 `printf()` 函数中的各种输出格式及其使用方法。 #### 二、转换说明符 `printf()` 函数中的格式控制字符串由一系列的转换说明符组成,每个转换说明符都有其特定的功能和用途。下面是常用的转换说明符: 1. **%a(%A)**: 浮点数、十六进制数字和 p-(P-) 记数法 (C99)。 - `%a`: 输出小数部分为十六进制形式的浮点数。 - `%A`: 同 `%a`,但十六进制数字用大写 A-F。 2. **%c**: 字符输出。 - 输出一个字符。 3. **%d**: 有符号十进制整数输出。 - 输出一个带符号的十进制整数。 4. **%f**: 浮点数输出 (包括 float 和 double 类型)。 - 默认情况下输出 6 位小数。 5. **%e(%E)**: 浮点数指数输出 [e-(E-) 记数法]。 - `%e`: 小写字母 e 表示指数部分。 - `%E`: 大写字母 E 表示指数部分。 6. **%g(%G)**: 浮点数不显无意义的零 "0"。 - `%g`: 当指数形式更短时输出指数形式,否则输出十进制形式。 - `%G`: 同 `%g`,但指数形式时使用大写字母 E。 7. **%i**: 有符号十进制整数输出 (与 %d 相同)。 - 输出一个带符号的十进制整数。 8. **%u**: 无符号十进制整数输出。 - 输出一个无符号的十进制整数。 9. **%o**: 八进制整数输出。 - 输出一个八进制形式的整数。 10. **%x(%X)**: 十六进制整数输出。 - `%x`: 输出一个小写的十六进制整数。 - `%X`: 输出一个大写的十六进制整数。 11. **%p**: 指针输出。 - 输出指针的值。 12. **%s**: 字符串输出。 - 输出一个字符串。 13. **%%**: 输出百分号 "%"。 #### 三、标志 `printf()` 函数中的标志用于控制输出数据的格式,主要包括以下几种: 1. **左对齐** (`-`)。 - 数据在输出时会左对齐。 - 示例: `%-20s` 表示字符串输出时左对齐,至少占用 20 个字符位置。 2. **右对齐** (`+`)。 - 数据在输出时会右对齐。 - 示例: `%+20s` 表示字符串输出时右对齐,至少占用 20 个字符位置。 3. **空格**。 - 若符号为正,则显示空格;若为负,则显示 "-"。 - 示例: `%6.2f`#:对 c,s,d,u 类无影响;对 o 类,在输出时加前缀 o;对 x 类,在输出时加前缀 0x。 4. **#**。 - 对 c,s,d,u 类无影响。 - 对 o 类,在输出时加前缀 o。 - 对 x 类,在输出时加前缀 0x。 - 对 e,g,f 类当结果有小数时才给出小数点。 #### 四、格式字符串(格式) `printf()` 函数的格式控制字符串通常包含以下几个部分: 1. **标志**。 2. **输出最少宽度**。 3. **精度**。 4. **长度**。 5. **类型**。 示例格式: ``` [标志][输出最少宽度][.精度][长度]类型 ``` #### 五、示例 1. **%-0m.nl 或 h 格式字符** - 示例: `%-07.2f` 输入 3852.99,输出 3853.0,左对齐,并且在宽度不足的情况下填充 0。 2. **格式字符详解** - **d 格式**:用来输出十进制整数。 - 示例: `%d` 按整型数据的实际长度输出。 - 示例: `%md` m 为指定的输出字段的宽度。如果数据的位数小于 m,则左端补以空格。 - 示例: `%ld` 输出长整型数据。 - **o 格式**:以无符号八进制形式输出整数。 - 示例: `%o` 输出一个无符号八进制整数。 - 示例: `%lo` 输出长整型的无符号八进制形式。 - 示例: `%mo` 指定字段宽度为 m 的无符号八进制输出。 - **x 格式**:以无符号十六进制形式输出整数。 - 示例: `%x` 输出一个小写的无符号十六进制整数。 - 示例: `%lx` 输出长整型的无符号十六进制形式。 - 示例: `%mx` 指定字段宽度为 m 的无符号十六进制输出。 - **u 格式**:以无符号十进制形式输出整数。 - 示例: `%u` 输出一个无符号十进制整数。 - 示例: `%lu` 输出长整型的无符号十进制形式。 - 示例: `%mu` 指定字段宽度为 m 的无符号十进制输出。 - **c 格式**:输出一个字符。 - 示例: `%c` 输出一个字符。 - **s 格式**:用来输出一个串。 - 示例: `%s` 输出字符串。 - 示例: `%ms` 输出字符串占 m 列。 - 示例: `%-ms` 如果串长小于 m,则在 m 列范围内,字符串向左靠,右补空格。 - **f 格式**:用来输出实数。 - 示例: `%f` 不指定宽度,整数部分全部输出并输出 6 位小数。 - 示例: `%m.nf` 输出共占 m 列,其中有 n 位小数,如数值宽度小于 m 左端补空格。 - 示例: `%-m.nf` 输出共占 n 列,其中有 n 位小数,如数值宽度小于 m 右端补空格。 - **e 格式**:以指数形式输出实数。 - 示例: `%e` 数字部分输出 6 位小数,指数部分占 5 位或 4 位。 - 示例: `%m.ne` m、n 和“-”字符含义与前相同。此处 n 指数据的数字部分的小数位数,m 表示整个输出数据所占的宽度。 - **g 格式**:自动选择 f 格式或 e 格式中较短的一种输出,且不输出无意义的零。 - 示例: `%g` 自动选择输出格式。 #### 六、进一步说明 如果想要输出字符 “%”,则应该在“格式控制”字符串中用连续两个 % 表示,例如: ```c printf("%f%%", 1.0 / 3); // 输出 0.333333% ``` 以上内容全面覆盖了 `printf()` 函数中各种输出格式的使用方法及示例,希望对理解和使用 `printf()` 函数有所帮助。
- 粉丝: 5743
- 资源: 170
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助