C语言 printf / scanf 占位符速查表
一、整数类型
| 占位符 | 释义 | 用途 |
|---|---|---|
| %d | 有符号十进制整数 (int) | printf/scanf |
| %i | 有符号十进制整数 (int) | printf/scanf |
| %u | 无符号十进制整数 (unsigned) | printf/scanf |
| %o | 八进制整数 | printf/scanf |
| %x | 十六进制整数(小写) | printf/scanf |
| %X | 十六进制整数(大写) | printf |
| %hd | short | printf/scanf |
| %hhd | signed char | printf/scanf |
| %ld | long | printf/scanf |
| %lld | long long | printf/scanf |
| %lu | 无符号 long | printf/scanf |
| %llu | 无符号 long long | printf/scanf |
二、浮点类型
| 占位符 | 释义 | 用途 |
|---|---|---|
| %f | float / double (默认6位小数) | printf: float/double 都用 |
| %lf | double | scanf 输入 double 必须用 |
| %Lf | long double | printf/scanf |
| %e | 科学计数法(小写e) | printf/scanf |
| %E | 科学计数法(大写E) | printf |
| %g | 自动选 %f 或 %e 较短者 | printf/scanf |
| %G | 自动选 %f 或 %E 较短者 | printf |
| %a | 十六进制浮点数(小写) | printf |
| %A | 十六进制浮点数(大写) | printf |
三、字符与字符串
| 占位符 | 释义 | 用途 |
|---|---|---|
| %c | 单个字符 (char) | printf/scanf |
| %s | 字符串 (char数组/指针) | printf/scanf |
四、指针
| 占位符 | 释义 | 用途 |
|---|---|---|
| %p | 指针地址(十六进制) | printf/scanf |
五、其他
| 占位符 | 释义 | 用途 |
|---|---|---|
| %% | 输出一个百分号 % | printf |
| %n | 已输出字符数写入参数(慎用) | printf |
六、格式修饰符(加在 % 和字母之间)
| 占位符 | 释义 |
|---|---|
| %5d | 宽度5,右对齐 |
| %-5d | 宽度5,左对齐 |
| %05d | 宽度5,用0填充 |
| %+d | 强制显示正负号 |
| %.2f | 保留2位小数 |
| %8.3f | 总宽8,保留3位小数 |
| %*d | 宽度由参数指定 |
| %-8.3f | 左对齐,总宽8,保留3位小数 |
七、printf 与 scanf 关键区别
- printf 输出 float 和 double 都用 %f
- scanf 输入 float 用 %f,double 必须用 %lf
- scanf 中变量前要加 & (数组名除外)
- scanf 的 %c 会读取空白字符,注意缓冲区
示例:
printf(“%05d\n”, 42); // 00042
printf(“%-6s|\n”, “abc”); // abc |
printf(“%.2f\n”, 3.14159); // 3.14
printf(“%8.3f\n”, 3.14159); // 3.142
float a; double b;
scanf(“%f”, &a); // float
scanf(“%lf”, &b); // double
速记口诀:
整数 d i u o x X
浮点 f e g a
字符 c 字符串 s
指针 p 百分号 %%
以上内容来源于deepseek