标题:菜鸟请教一个关于格式化输出的问题
只看楼主
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
结帖率:100%
已结贴  问题点数:20 回复次数:10 
菜鸟请教一个关于格式化输出的问题
我想在某一整数前补零,正常的话这样就可以
printf ("%.2i",intA);
这样的话, 假如intA小于10,那么将在intA前补上一个零。 我问的是里面的2可不可以用一个变量来代替呢?
搜索更多相关主题的帖子: 正常 
2011-02-25 16:45
犬虫门心
Rank: 8Rank: 8
来 自:西安
等 级:蝙蝠侠
帖 子:209
专家分:753
注 册:2011-1-25
得分:0 
不行啊。
你最终的要求是什么呢?

当一名对得起学生学费的老师,一直是我的目标!我会更努力的!
2011-02-25 16:47
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
得分:0 
以下是引用犬虫门心在2011-2-25 16:47:07的发言:

不行啊。
你最终的要求是什么呢?

我就想要下面的效果(我语言表达能力欠缺)

root@~ #n=1
root@~ #printf "%0${n}d\n" 1
1
root@~ #n=2
root@~ #printf "%0${n}d\n" 1
01
root@~ #n=3
root@~ #printf "%0${n}d\n" 1
001
root@~ #n=10
root@~ #printf "%0${n}d\n" 1
0000000001
root@~ #
这个n怎么传递给printf呢?

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-02-25 16:55
犬虫门心
Rank: 8Rank: 8
来 自:西安
等 级:蝙蝠侠
帖 子:209
专家分:753
注 册:2011-1-25
得分:20 
本人才疏学浅,在我们实训小组开发的程序中,这样的问题是将数值转换成字符串,然后再输出。

当一名对得起学生学费的老师,一直是我的目标!我会更努力的!
2011-02-25 17:05
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
得分:0 
以下是引用犬虫门心在2011-2-25 17:05:50的发言:

本人才疏学浅,在我们实训小组开发的程序中,这样的问题是将数值转换成字符串,然后再输出。

多谢。

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-02-25 17:06
犬虫门心
Rank: 8Rank: 8
来 自:西安
等 级:蝙蝠侠
帖 子:209
专家分:753
注 册:2011-1-25
得分:0 
char s[11]; //11的原因是,我想你要的数字不会超过10亿以上吧?

sprintf(s, "%010d", n); //n是数值
puts(s+10-m); //m是位数

当一名对得起学生学费的老师,一直是我的目标!我会更努力的!
2011-02-25 17:20
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
得分:0 
还没有学到那spritnf和puts。 再次感谢。

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-02-25 17:25
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
得分:0 
这个问题解决啦, 查看了一下printf函数的手册。
分享给大家
程序代码:
int m=4;
int n=12;
printf ("%.*i\n",m,n); //结果就是0012,星号的意思就是把参数列表里下个参数作为输出宽度,这里就是m



[ 本帖最后由 ansic 于 2011-2-25 19:02 编辑 ]

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-02-25 19:01
犬虫门心
Rank: 8Rank: 8
来 自:西安
等 级:蝙蝠侠
帖 子:209
专家分:753
注 册:2011-1-25
得分:0 
以下是引用ansic在2011-2-25 19:01:43的发言:

这个问题解决啦, 查看了一下printf函数的手册。
分享给大家
 
int m=4;
int n=12;
printf ("%.*i\n",m,n); //结果就是0012,星号的意思就是把参数列表里下个参数作为输出宽度,这里就是m
 
学习了!!!

当一名对得起学生学费的老师,一直是我的目标!我会更努力的!
2011-02-25 19:05
liangjinchao
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:376
专家分:697
注 册:2010-11-8
得分:0 
学习学习

因为有了因为,所以有了所以,既然已成既然,何必再说何必
2011-02-25 19:19



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-332769-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022146 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved