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

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

基本格式说明符

| 格式说明符 | 描述 |

data-ad-format="fluid" data-ad-layout-key="-7k+ex-4a-9w+4a">

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

| %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:写入的字符数(存储在参数中)

    %%:百分号本身

示例代码

1
2
3
4
5

#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
2
3

}

参考文档

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

  1. GNU C Library (glibc) 文档:

    printf

    snprintf

  2. C标准库文档:

    C11 Standard - The fprintf function

  3. cppreference.com:

    std::printf

    std::snprintf

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

data-ad-format="auto" data-full-width-responsive="true">