printf 字符串输出固定长度

本文通过一个C语言示例程序详细解析了printf函数中格式控制符的使用方法,特别是当遇到小数点后没有数字的情况时如何按ANSI标准进行格式化。

#include <stdio.h>

void main()
{
charstr[20] = "abcdefg";
double n = 10.1234567;
printf("%.3s /n", str);
printf("%.3f /n", n);
}

输出:abc
10.123

下面对printf中的%.M输出做一下简单的分析,在printf的定义中,回解析所有的字符有自己的协议栈来分析format的参数,其中,

/* 一下内容来自output.c-------------------------------------------------------

while ((ch = *format++) != _T('/0') && charsout >= 0) {
chclass = find_char_class(ch); /* find character class */
state = find_next_state(chclass, state); /* find next state */
/* execute code for each state */
switch (state) {
......
case ST_DOT:
/* zero the precision, since dot with no number means 0
not default, according to ANSI */
precision = 0;
break;

--------------------------------------------------------------*/

就如代码中所说的,如果小数点后面不是数字,则按照ANSI标准来格式化后面的输出,来比较输出的长度

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值