C语言——格式说明符前面加修饰符

本文详细介绍了C语言中如何通过格式说明符的修饰符控制printf和scanf函数的输出和输入格式,包括宽度、精度的设定、左对齐和填充字符,以及如何在运行时动态调整这些值。

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

        在C语言中,格式说明符前面可以添加一些修饰符来控制输出或输入的格式,主要包括宽度、精度、左对齐标志和前缀填充字符等。

 1. 宽度(Width)


        %[width]type:这里的width是一个非负整数,表示输出字段的最小宽度。如果实际数据位数大于制定宽度,将按照实际整数位输出;如果实际数据位数小于指定宽度,则会在左边补足空格或者0(根据填充字符决定),以达到指定宽度。

printf("%10d", 5);

//将输出“      5”,其中“5”前面有9个空格。


 2. 精度(Precision)


        %.precision[type]:对于浮点数,.precision指定了小数点后的数字位数;对于字符串,它表示输出的最大字符数,超过则截断。

printf("%.2f", 3.14159);

//将输出“3.14”。


 3. 左对齐标志(Left-justification)


         - 用于表示左对齐,即在满足宽度要求的情况下,数据靠左显示,不足部分用填充字符填充右侧。

printf("%-10d", 5);

//将输出“5      ”,其中“5”后面有9个空格。


 4. 填充字符(Prefix Padding Character)


 • 默认情况下,当需要填充时使用空格作为填充字符。通过在宽度和符号之间插入0,可以指定用0填充。

printf("%010d", 5);

//将输出“0000000005”,左侧用0填充至10位。

5、* 在 printf 或 scanf 系列函数的格式化字符串中确实可以用来从参数列表中获取宽度或精度值。

        具体来说,在格式化字符串中的 % 后面跟一个星号 * 以及另一个数字,这个星号不是直接指定宽度或精度,而是指示应该从对应的参数列表中获取实际的数值。

 1. 宽度:

宽度由参数动态决定

int width = 10;
printf("%*d", width, some_integer_value); 
// 这里宽度(field width)由变量width提供

上述代码将打印出一个整数,其左对齐且至少占据10个字符宽度,不足部分用空格填充。

 2. 精度:

对于浮点数或者字符串(%s)也有类似的情况,但通常用于浮点数的精度控制:

int precision = 3;
float value = 3.14159265;
printf("%.3f", value); 
// 静态指定小数点后3位精度
printf("%.*f", precision, value); 
// 动态指定小数点后的精度由变量precision提供

在第二个 printf 调用中,.* 表示浮点数的精度由 precision 变量提供的值来确定。

通过这种方式,在运行时根据需要调整输出格式的宽度或精度,而无需硬编码到格式化字符串中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Code repairman

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

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

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

打赏作者

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

抵扣说明:

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

余额充值