c语言-printf常用输出格式总结

在C语言中,`printf` 和 `snprintf` 是用于格式化输出的常用函数。它们支持多种格式说明符,用于处理不同类型的数据。以下是这些函数常用的格式说明符及其组合类型的总结:

### 基本格式说明符

| 格式说明符 | 描述                           |

|————|——————————–|

| `%d`       | 有符号十进制整数               |

| `%u`       | 无符号十进制整数               |

| `%o`       | 八进制整数                     |

| `%x`       | 十六进制整数(小写字母)       |

| `%X`       | 十六进制整数(大写字母)       |

| `%f`       | 浮点数                         |

| `%e`       | 科学计数法(小写字母e)        |

| `%E`       | 科学计数法(大写字母E)        |

| `%g`       | 通用浮点格式(自动选择%f或%e) |

| `%G`       | 通用浮点格式(自动选择%f或%E) |

| `%c`       | 字符                           |

| `%s`       | 字符串                         |

| `%p`       | 指针地址                       |

| `%n`       | 写入的字符数(存储在参数中)   |

| `%%`       | 百分号本身                     |

### 长度和精度修饰符

| 修饰符       | 描述                           |

|————–|——————————–|

| `h`          | 短整型(用于 `%d`, `%o`, `%x`, `%u`) |

| `hh`         | char 类型(用于 `%d`, `%o`, `%x`, `%u`) |

| `l`          | 长整型(用于 `%d`, `%o`, `%x`, `%u`, `%f`) |

| `ll`         | 长长整型(用于 `%d`, `%o`, `%x`, `%u`) |

| `L`          | 长双精度浮点型(用于 `%f`, `%e`, `%g`, `%G`) |

| `.n`         | 精度(用于浮点数和字符串)     |

| `*`          | 宽度和精度由参数指定           |

### 组合示例

1. **整数类型**

   • `%d`:有符号十进制整数

   • `%u`:无符号十进制整数

   • `%o`:八进制整数

   • `%x`:十六进制整数(小写)

   • `%X`:十六进制整数(大写)

   • `%hd`:短整型

   • `%hu`:无符号短整型

   • `%hhd`:char 类型(有符号)

   • `%hhu`:char 类型(无符号)

   • `%ld`:长整型

   • `%lu`:无符号长整型

   • `%lld`:长长整型

   • `%llu`:无符号长长整型

2. **浮点类型**

   • `%f`:单精度浮点数

   • `%lf`:双精度浮点数(通常与 `%f` 相同)

   • `%Lf`:长双精度浮点数

   • `%e`:科学计数法(小写e)

   • `%E`:科学计数法(大写E)

   • `%g`:通用浮点格式(自动选择 `%f` 或 `%e`)

   • `%G`:通用浮点格式(自动选择 `%f` 或 `%E`)

   • `%.2f`:保留两位小数的浮点数

   • `%10.2f`:总宽度为10,保留两位小数的浮点数

3. **字符和字符串**

   • `%c`:单个字符

   • `%s`:字符串

   • `%.*s`:动态指定长度的字符串

4. **指针**

   • `%p`:指针地址

5. **其他**

   • `%n`:写入的字符数(存储在参数中)

   • `%%`:百分号本身

### 示例代码

“`c

#include <stdio.h>

int main() {

int a = 123;

unsigned int b = 456;

char c = 'A';

float d = 123.456;

double e = 12345.6789;

char *str = "Hello, World!";

void *ptr = &a;

printf("a Integer: %d\n", a);
printf("a Octal: %o\n", a);
printf("a Hexadecimal (lower): %x\n", a);
printf("a Hexadecimal (upper): %X\n", a);
printf("a Short Integer: %hd\n", (short)a);

printf("b Unsigned Integer: %u\n", b);
printf("b Unsigned Short Integer: %hu\n", (unsigned short)b);

printf("c Char[%%c,%%d]: %c, %d\n", c, c);
printf("String[%%s]: %s\n", str);
printf("Pointer[%%p]: %p\n", ptr);
printf("Float[%%.2f]: %.2f\n", d);
printf("Float[%%.3f]: %.3f\n", d);
printf("Double:[%%.4lf] %.4lf\n", e);
printf("Double:[%%.5lf] %.5lf\n", e);
printf("Scientific Notation: %e\n", e);
printf("General Format: %g\n", e);
printf("Width and Precision: %10.2f\n", d);
printf("Dynamic String Length: %.*s\n", 5, str);

int  chars_written;
int ret = printf("Number of characters written: %n\n", &chars_written); // 注意:%n 不会输出任何内容,但会将写入的字符数存储在 chars_written 中

 printf("chars written:%d print return:%d\n", chars_written,ret);

}

“`

### 参考文档

如果你需要更详细的信息,可以参考以下官方文档:

1. **GNU C Library (glibc) 文档**:

   • [printf](https://www.gnu.org/software/libc/manual/html_node/Formatted-Output-Functions.html)

   • [snprintf](https://www.gnu.org/software/libc/manual/html_node/Formatted-Output-Functions.html#Formatted-Output-Functions)

2. **C标准库文档**:

   • [C11 Standard – The fprintf function](https://en.cppreference.com/w/c/io/fprintf)

3. **cppreference.com**:

   • [std::printf](https://en.cppreference.com/w/c/io/fprintf)

   • [std::snprintf](https://en.cppreference.com/w/c/io/snprintf)

这些文档提供了详细的格式说明符及其用法,可以帮助你更深入地理解和使用 `printf` 和 `snprintf` 函数。

此条目发表在c语言编程, linux文章, 站点文章分类目录,贴了, , , 标签。将固定链接加入收藏夹。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注