首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【C语言】printf函数详解

【C语言】printf函数详解

作者头像
zore
发布2025-12-30 18:44:36
发布2025-12-30 18:44:36
5050
举报
文章被收录于专栏:C/C++ 专栏C/C++ 专栏

一.printf简介

1.概念

printf是库函数,C语言标准库中提供的现成的函数 printf=print+format 可按照格式来打印信息

2.头文件

为了不再重复实现常见代码,C语言标准规定了一组函数,这些函数组成了函数库,称为标准库,一个系列的库函数会声明在同一个头文件中,使用库函数,就要包含对应的头文件。而printf使用时需要包含头文件**<stdio.h>**

3.语法结构以及例子

代码语言:javascript
复制
int printf( const char *format, ... );
代码语言:javascript
复制
#include<stdio.h>
int main()
{
	printf("hello,csdn");
	return 0;
}

4.返回值

成功后,将返回写入的字符总数。

如果发生写入错误,则设置错误指示器(ferror)并返回负数。

如果在写入宽字符时发生多字节字符编码错误,那么 errno 将设置为 EILSEQ 并返回负数。

二、printf参数

1.参数说明

参数format包含了两种类型的对象:普通字符和转换说明。

普通字符:在输出时,普通字符将原样不动地复制到标准输出。

转换说明:转换说明并不直接输出而是用于控制 printf 中参数的转换和打印。每个转换说明都由一个百分号字符(%)开始,以转换说明符结束,从而说明输出数据的类型、宽度、精度等。它可以选择性地包含嵌入式转换说明符,这些说明符被后续附加参数中指定的值替换,并根据请求进行转换。

2.转换说明符

转换说明符遵循以下原型: %[flags][width][.precision][length]转换说明符 %[标志][最小宽度][.精度][类型长度]转换说明符

以下是常见的转换说明符:

在这里插入图片描述
在这里插入图片描述

表格选自此处,感兴趣的可以看看,其中包含了所有函数的介绍

以下是一些常见的实例:

(内有注释)

代码语言:javascript
复制
#include<stdio.h>

int main()
{
	int a = 37;
	printf("hello,csdn\n\n");
	//打印普通字符
	printf("%d\n\n", 37);
	//打印十进制整数
	printf("%ld\n\n", 37);
	//打印long int类型整数
	printf("%c\n\n", 37);
	//打印字符
	printf("%s\n\n", "37");
	//打印字符串
	printf("%f\n\n", 0.37);
	//打印小数(包含float类型)
	printf("%lf\n\n",0.37);
	//打印long double类型
	printf("%p\n\n", &a);
	//打印指针(用来打印地址)
	printf("%u\n\n", 37);
	//打印无符号整数
	printf("%x\n\n", 37);
	//打印十六进制整数
	printf("%o\n\n", 37);
	//打印八进制整数
	printf("%%\n\n", 37);
	//打印%
	return 0;
}

运行结果:

在这里插入图片描述
在这里插入图片描述

当然有些转换说明符你们可能还没接触到 在以后的学习中我也会一一讲解

三、printf的输出格式

上面我们提到了 转换说明符遵循以下原型: %[flags][width][.precision][length]转换说明符 %[标志][最小宽度][.精度][类型长度]转换说明符 现在来一一讲解[标志][最小宽度][.精度][类型长度]如何控制

以下我就给大家一些例子吧

1.标志

标志用于规定输出样式

在这里插入图片描述
在这里插入图片描述

(内有注释)

代码语言:javascript
复制
#include<stdio.h>

int main()
{
	printf("%-d\n\n",37);
	//左对齐格式
	printf("%+d\n", 37);
	printf("%+d\n\n", -37);
	//总是显示正负号
	//且对负号无影响
	printf("% d\n\n", 37);
	//则在值前插入空格
	printf("%#o\n\n", 37);
	//以八进制输出
	printf("%#x\n\n", 37);
	//以十六进制输出
	printf("%08d\n\n", 37);
	//用(0)而不是
	// 空格左填充数字

	return 0;
}

运行结果:

在这里插入图片描述
在这里插入图片描述

2.最小宽度

printf允许限定占位符的最小宽度

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
#include<stdio.h>

int main()
{
	printf("%d\n\n", 8);
	//正常输出
	printf("%5d\n\n", 8);
	//要求最小宽度5位,
	// 默认右对齐,用空格填充
	return 0;
}

运行结果:

在这里插入图片描述
在这里插入图片描述

3.精度

精度用于指定输出精度,以“.”开头,后跟十进制整数 用于限制小数点位数

在这里插入图片描述
在这里插入图片描述

#include<stdio.h>

代码语言:javascript
复制
#include<stdio.h>

int main()
{
	printf("%f\n\n", 0.37);
	//正常输出保留后6位
	printf("%.5f\n\n", 0.37);
	//保留后6位
	printf("%.1f\n\n", 0.37);
	//若位数超出则会四舍五入
	printf("%.f\n\n\n", 3.7777);
	//如果只有小数点没有数字
	// 默认为保留0位且四舍五入
	printf("%.6g\n\n", 3.7777777);
	//对于g和G,限制总的输出位数
	printf("%.3s\n\n", "abcdefg");
	// .X限制字符串的输出长度


	return 0;
}
在这里插入图片描述
在这里插入图片描述

4.类型长度

类型长度用于控制待输出整型数据的数据类型长度

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
#include<stdio.h>

int main()
{
	printf("%d\n\n", 123456);
	//正常打印
	printf("%hd\n\n\n", 123456);
	//以短整型异常打印
	//若打印过长会丢失数据
	printf("%hd\n\n\n", 1234);
	//以短整型正常打印
	//打印少量数字
	printf("%ld\n\n", 123456);
	//以长整型打印

	return 0;
}
在这里插入图片描述
在这里插入图片描述

四、转义字符

转义字符用于表示字符串文字和字符常量中的某些特殊字符。 例如上文的 \n 意思为换行 以下是常见的转义字符,大家可自行查看 本文就不进行过多介绍

在这里插入图片描述
在这里插入图片描述

五、总结

以上代码均可复制 大家可到自己编译器中自行实验 当然,若还有什么不懂的地方也可在评论区留言 我会一一回复 感谢大家的支持啦

六、参考资料 https://legacy.cplusplus.com/reference/cstdio/printf/?kw=printf

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-12-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一.printf简介
    • 1.概念
    • 2.头文件
    • 3.语法结构以及例子
    • 4.返回值
  • 二、printf参数
    • 1.参数说明
    • 2.转换说明符
  • 三、printf的输出格式
    • 1.标志
    • 2.最小宽度
    • 3.精度
    • 4.类型长度
  • 四、转义字符
  • 五、总结
  • 六、参考资料 https://legacy.cplusplus.com/reference/cstdio/printf/?kw=printf
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档