C语言中printf()函数,格式输出符

在 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 位小数。
%* 动态指定宽度或精度
c 复制代码
int width = 8, precision = 3;
printf("%*.*f", width, precision, 3.14159); // 输出 "   3.142"

转义字符

(1)是字符常量,在内存中实际是按整数类型存储。不可改变不能

(2)表示非打印字符

转义序列 说明
\n 换行
\t 水平制表
\b 退格,移动光标位置,一般不会擦除退回的内容,定义之后不能被修改。
\r 回车,回到当前行前面
\a 发出一声警告

例如:

c 复制代码
/*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.00

Gee!    $4000.00 a month is $48000.00 a year.

****************************/
相关推荐
我爱学嵌入式2 小时前
C语言第 9 天学习笔记:数组(二维数组与字符数组)
c语言·笔记·学习
hqxstudying2 小时前
Java异常处理
java·开发语言·安全·异常
wjs20245 小时前
状态模式(State Pattern)
开发语言
我命由我123455 小时前
Kotlin 数据容器 - List(List 概述、创建 List、List 核心特性、List 元素访问、List 遍历)
java·开发语言·jvm·windows·java-ee·kotlin·list
liulilittle5 小时前
C++ TAP(基于任务的异步编程模式)
服务器·开发语言·网络·c++·分布式·任务·tap
励志要当大牛的小白菜6 小时前
ART配对软件使用
开发语言·c++·qt·算法
爱装代码的小瓶子9 小时前
数据结构之队列(C语言)
c语言·开发语言·数据结构
Maybe_ch10 小时前
.NET-键控服务依赖注入
开发语言·c#·.net
超浪的晨10 小时前
Java UDP 通信详解:从基础到实战,彻底掌握无连接网络编程
java·开发语言·后端·学习·个人开发
终焉暴龙王10 小时前
CTFHub web进阶 php Bypass disable_function通关攻略
开发语言·安全·web安全·php