本篇摘要:
printf()函数的使用
printf()函数的转换说名修饰符
---------------------------------------------------------------------------------------------------------------------------------
printf()函数的使用:
#include <stdio.h>
#define PI 3.141593
int main(void)
{
int number = 7;
float pies = 12.75;
int cost = 7800;
printf("The %d contestants are %f berry pies .\n", number, pies);
printf("The value of pi is %f.\n", PI);
printf("Farewell! thou art too dear for my possessing ,\n");
printf("%c%d\n", '$', 2 * cost);
return 0;
}
参数说明
format
:格式字符串,包含普通字符和格式说明符。...
:可变参数,根据format
中的格式说明符提供对应的值。
常见的格式说明符
%d
或%i
:输出十进制整数。%u
:输出无符号十进制整数。%f
:输出浮点数。%c
:输出单个字符。%s
:输出字符串。%x
:输出无符号十六进制整数(小写)。%X
:输出无符号十六进制整数(大写)。%o
:输出无符号八进制整数。%%
:输出一个百分号字符。
printf()函数的转换说名修饰符:
printf()
函数的格式说明符可以通过修饰符进一步控制输出格式。这些修饰符包括标志、最小字段宽度、精度和长度修饰符。以下是详细说明:
标志
-
:左对齐。在默认情况下,输出是右对齐的。+
:在正数前显示加号。- (空格):在正数前显示一个空格。
#
:对于o
、x
或X
类型的说明符,分别加上前缀0
、0x
或0X
。0
:用前导零填充输出字段。
最小字段宽度
指定输出的最小宽度。如果输出的数据长度小于这个宽度,则用空格或前导零(如果指定了 0
标志)填充。
精度
对浮点数,指定小数点后的位数;对字符串,指定最大字符数;对整数,指定最小数字位数(不足时用前导零填充)。
长度修饰符
长度修饰符用于改变格式说明符的默认类型:
h
:短整型(short
),例如%hd
表示short
类型整数。l
:长整型(long
),例如%ld
表示long
类型整数。ll
:长长整型(long long
),例如%lld
表示long long
类型整数。L
:长双精度(long double
),例如%Lf
表示long double
类型浮点数。
#include <stdio.h>
int main() {
int a = 123;
float b = 45.6789;
char str[] = "Hello";
// 使用标志和宽度修饰符
printf("右对齐,宽度为10:'%10d'\n", a);
printf("左对齐,宽度为10:'%-10d'\n", a);
printf("宽度为10,用0填充:'%010d'\n", a);
// 使用精度修饰符
printf("默认精度:'%f'\n", b);
printf("保留2位小数:'%.2f'\n", b);
printf("宽度为10,保留2位小数:'%10.2f'\n", b);
// 使用长度修饰符
long long ll_num = 123456789012345LL;
printf("长长整型:'%lld'\n", ll_num);
// 使用字符串精度修饰符
printf("字符串,最多显示3个字符:'%.*s'\n", 3, str);
return 0;
}
输出结果:
右对齐,宽度为10:' 123'
左对齐,宽度为10:'123 '
宽度为10,用0填充:'0000000123'
默认精度:'45.678902'
保留2位小数:'45.68'
宽度为10,保留2位小数:' 45.68'
长长整型:'123456789012345'
字符串,最多显示3个字符:'Hel'
详细解释
-
标志
%-10d
:数字123
左对齐,占据至少 10 个字符宽度。%010d
:数字123
右对齐,占据至少 10 个字符宽度,用前导零填充。
-
精度
%.2f
:浮点数45.6789
保留 2 位小数。%10.2f
:浮点数45.6789
占据至少 10 个字符宽度,保留 2 位小数。
-
长度修饰符
%lld
:输出long long
类型的整数。
-
字符串精度修饰符
%.*s
:输出字符串str
的前 3 个字符。精度参数在*
位置动态传入。
通过合理使用这些修饰符,可以更灵活地控制 printf()
函数的输出格式,满足各种需求。