C语言:printf()---格式数据输出

本文详细介绍了C语言中printf函数的使用方法,包括其基本格式、标志、最小宽度、精度、类型长度及类型等概念,并提供了丰富的示例帮助理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C语言:基础开发----目录


1. printf() 简介

printf函数称为格式输出函数,是一个标准库函数,用于将格式化后的字符串输出到标准输出,它的函数原型在头文件“stdio.h”中。

2. printf()函数调用的一般形式

调用格式:

printf("格式化字符串", 输出表列);

格式化字符串包含三种对象,分别为:
(1)字符串常量:原样输出,在显示中起提示作用。
(2)格式控制字符串:用于指定输出格式。
(3)转义字符:在字符串中会被自动转换为相应操作命令。

3.格式控制字符串详解

printf() 的格式控制字符串组成如下:

%[flags] [width] [.prec] [length] type
%[标志] [最小宽度] [.精度] [类型长度] 类型

3.1 标志(flags)

标志(flags)规定输出的样式和取值,具体如下:

字符含义示例结果
-结果左对齐,右边填空格
(默认是右对齐,左边填空格)
printf("%-5d\n",1234);
printf("%5d\n",1234);
 1234
1234 
+输出符号(正号或负号)printf("%+d %+d\n",1234,-1234);+1234 -1234
空格输出值为正时加上空格,为负时加上负号printf("% d % d\n",1234,-1234); 1234 -1234
#type是o、x、X时,增加前缀0、0x、0X
type是e、g、f时,结果有小数时才给出小数点
printf("%x %#x\n",1234,1234);
printf("%g %#g\n",1000.0,1000.0);
3e8 0x3e8
1000 1000.0
0将输出的前面补上0,直到占满指定列宽为止
(不可以搭配使用“-”)
printf("%05d\n",123);00123

3.2 最小宽度(width)

用十进制整数来表示输出的最少位数。若实际位数多于指定的宽度,则按实际位数输出,若实际位数少于定义的宽度则补以空格或0。
具体如下:

width描述示例结果
数值十进制数printf("%06d",1000);001000
*不显示指明输出最小宽度,而是以星号代替,在printf的输出参数列表中给出printf("%0*d",6,1000);001000

3.3 精度(.precision)

精度格式符以“.”开头,后跟十进制整数。
具体取值如下:

.precision含义示例结果
.数值十进制数
(1)对于整型(d,i,o,u,x,X),precision表示输出的最小的数字个数,不足补前导零,超过不截断。
(2)对于浮点型(a, A, e, E, f), precision表示小数点后数值位数,默认为六位,不足补后置0,超过则截断。
(3)对于类型说明符g或G,表示可输出的最大有效数字。
(4)对于字符串(s),precision表示最大可输出字符数,不足正常输出,超过则截断。
(5)precision不显示指定,则默认为0
printf("%.8d\n",1000);
printf("%.8f\n",1000.123456789);
printf("%.8f\n",1000.123456)
printf("%.8g\n",1000.123456);
printf("%.8s\n",“abcdefghij”);
00001000
1000.12345679
1000.12345600
1000.1235
abcdefgh
.*以星号代替数值,类似于width中的*,在输出参数列表中指定精度。printf("%.*d\n",8,1000);00001000

注意: 在对浮点数和整数截断时,存在四舍五入。

3.4 类型长度(length)

类型长度(length)指明待输出数据的长度。
具体如下:

length含义占用字节数示例结果
hh将相应的参数按 signed char 或 unsigned char 类型输出1printf("%hhd",'A');65
h将相应的参数按 short 或 unsigned short 类型输出2printf("%hd\n",32767);
printf("%hd\n",65535);
32767
-1
l相应的参数按 long 或 unsigned long 类型输出4printf("%ld\n",0x7fffffff);
printf("%ld\n",0xffffffff);
2147483647
-1
ll将相应的参数按 long long 或 unsigned long long 类型输出8printf("%lld\n",0x7fffffffffffffff);
printf("%lld\n",0xffffffffffffffff);
9223372036854775807
-1

3.5 类型(type)

类型(type)用于规定输出数据的类型。
具体含义如下:

字符对应数据类型含义示例结果
dint有符号10进制整数printf("%d",520);520
ounsigned int无符号8进制整数printf("%o",520);1010
uunsigned int无符号10进制整数printf("%u",520);520
xunsigned int无符号16进制整数(小写abcdef)printf("0x%x",123);0x7b
Xunsigned int无符号16进制整数(大写ABCDEF)printf("0X%X",123);0X7B
ffloat(double)浮点数(包括float和doulbe)printf("%06.2f",13.14);013.14
afloat(double)16进制p计数法输出浮点数(小写)printf("%a",15.15);0x1.e4cccdp+3
Afloat(double)16进制p计数法输出浮点数(大写)printf("%A",15.15);0X1.E4CCCDP+3
efloat(double)科学计数法,使用指数(Exponent)表示浮点数(小写)printf("%e",0.000000123);1.230000e-007
Efloat(double)科学计数法,使用指数(Exponent)表示浮点数(大写)printf("%E",0.000000123);1.230000E-007
gfloat(double)根据数值的长度,选择以最短的方式输出(小写)printf("%g\n%g",0.000000123,0.123);1.23e-007
0.123
Gfloat(double)根据数值的长度,选择以最短的方式输出(大写)printf("%G\n%G",0.000000123,0.123);1.23E-007
0.123
cchar字符型。可以把输入的数字按照ASCII码相应转换为对应的字符printf("%c\n",65,);
printf("%c\n",'A',);
A
A
schar*字符串。输出字符串中的字符直至字符串中的空字符(字符串以空字符’\0‘结尾)printf("%s\n","测试test \0 12345");测试test
pvoid*以16进制形式输出指针printf("0x%p","MQ");0x0040303D
%字符%输出字符‘%’(百分号)本身printf("%d%%",20);20%

4.转义字符

转义字符在字符串中会被自动转换为相应操作命令。printf() 使用的常见转义字符如下:

转义字符含义
\a警报(响铃)符
\b回退符
\f换页符
\n换行符
\r回车符
\t横向制表符
\v纵向制表符
\ \反斜杠
\ ’单引号
\“双引号
\?问号
\0空字符

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

根号五

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值