上海云站网络技术服务中心锡盟建设局网站
在 C 语言中,printf() 函数的格式输出符(格式说明符)用于控制输出的格式和数据类型。以下是常见的格式说明符及其用法:
基本格式符
打印各种类型的值
| 格式输出符 | 数据类型 | 说明 |
|---|---|---|
| %d | int | 输出有符号十进制整数 |
| %u | unsigned int | 输出无符号十进制整数 |
| %c | char | 输出单个字符。 |
| %f | float/double | 输出浮点数(默认保留6位小数 |
| %Lf | long double | 输出浮点数 |
| %e/%E | float/double | 科学计数法输出浮点数(如3.14e+1或者3.14E+1) |
| %g/%G | float/double | 自动选择 %f 或 %e,省略末尾的零 |
| %s | char* | 输出字符串(以 \0 结尾的字符数组) |
| %p | void* | 输出指针地址(十六进制格式) |
| %x/%X | unsigned int | 输出十六进制整数(小写或大写字母) |
| %o | unsigned int | 输出八进制整数 |
| %% | 输出 % 符号本身 | |
| %a/%A | float/double | 输出浮点数的十六进制表示(C99 起支持,如 0x1.5p+1) |
| %zd | sizeof() | 输出数据类型的大小 |
| %zu | sizeof() | 输出数据类型的大小 |
示例:
| 常量 | 类型 | 转换说明 |
|---|---|---|
| 12 | int | %d |
| 0x3 | int | %#x |
| ‘C’ | char (实际是int) | %c |
| 2.34E07 | double | %e |
| ‘\040’ | char (实际是int) | %c |
| 7.0 | double | %f |
| 6L | long int | %ld |
| 6.0f | float | %f |
| 0x5.b6p12 | double | %a |
| 012 | unsigned int | %#o |
| 2.9e05L | long double | %Le |
| ‘s’ | char | %c |
| 100000 | long int | %ld |
| ‘\n’ | char | %c |
| 20.0f | float | %f |
| 0x44 | unsigned int | %#x |
| -40 | signed int | %d |
格式修饰符
| 格式输出符 | 说明 |
|---|---|
| %5d | 输出至少 5 字符宽,不足时右对齐填充空格 |
| %-5d | 左对齐填充空格 |
| %05d | 输出至少 5 字符宽,右对齐并用 0 填充(如 00123) |
| %.2f | 保留 2 位小数 |
| %.5s | 最多输出字符串的前 5 个字符 |
| %10.3f | 总宽度 10 字符,保留 3 位小数。 |
| %* | 动态指定宽度或精度 |
int width = 8, precision = 3;
printf("%*.*f", width, precision, 3.14159); // 输出 " 3.142"
转义字符
(1)是字符常量,在内存中实际是按整数类型存储。不可改变不能
(2)表示非打印字符
| 转义序列 | 说明 |
|---|---|
| \n | 换行 |
| \t | 水平制表 |
| \b | 退格,移动光标位置,一般不会擦除退回的内容,定义之后不能被修改。 |
| \r | 回车,回到当前行前面 |
| \a | 发出一声警告 |
例如:
/*escape.c -- 使用转移序列*/
#include <stdio.h>
int main(void)
{/* code */float salary;printf("\aEnter your desired monthly salary:");printf(" $_______\b\b\b\b\b\b\b"); // \b退格使光标移动到$后面,不会擦去退格内容scanf("%f", &salary); //输入的内容将擦去"_"printf("\n\t$%.2f a month is $%.2f a year.", salary, salary * 12.0);printf("\rGee!\n"); // \r回到当前行前面return 0;
}/***************************
输出结果:
Enter your desired monthly salary: $4000.00Gee! $4000.00 a month is $48000.00 a year.****************************/
