在C语言中,printf 和 snprintf 是用于格式化输出的常用函数。它们支持多种格式说明符,用于处理不同类型的数据。以下是这些函数常用的格式说明符及其组合类型的总结:
基本格式说明符
| 格式说明符 | 描述 |
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 | 精度(用于浮点数和字符串) |
| * | 宽度和精度由参数指定 |
组合示例
整数类型
•
%d:有符号十进制整数•
%u:无符号十进制整数•
%o:八进制整数•
%x:十六进制整数(小写)•
%X:十六进制整数(大写)•
%hd:短整型•
%hu:无符号短整型•
%hhd:char 类型(有符号)•
%hhu:char 类型(无符号)•
%ld:长整型•
%lu:无符号长整型•
%lld:长长整型•
%llu:无符号长长整型浮点类型
•
%f:单精度浮点数•
%lf:双精度浮点数(通常与%f相同)•
%Lf:长双精度浮点数•
%e:科学计数法(小写e)•
%E:科学计数法(大写E)•
%g:通用浮点格式(自动选择%f或%e)•
%G:通用浮点格式(自动选择%f或%E)•
%.2f:保留两位小数的浮点数•
%10.2f:总宽度为10,保留两位小数的浮点数字符和字符串
•
%c:单个字符•
%s:字符串•
%.*s:动态指定长度的字符串指针
•
%p:指针地址其他
•
%n:写入的字符数(存储在参数中)•
%%:百分号本身
示例代码
1 |
|
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 |
|
参考文档
如果你需要更详细的信息,可以参考以下官方文档:
这些文档提供了详细的格式说明符及其用法,可以帮助你更深入地理解和使用 printf 和 snprintf 函数。