上海云站网络技术服务中心锡盟建设局网站
在 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.****************************/
