| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1148 人关注过本帖
标题:继续请教--->关于printf()的输出问题
只看楼主 加入收藏
冰天雪
Rank: 1
等 级:新手上路
威 望:1
帖 子:331
专家分:0
注 册:2007-2-27
收藏
 问题点数:0 回复次数:11 
继续请教--->关于printf()的输出问题

#include <stdio.h>

main()
{
int i,j;
for(i=1,j=8;i<12;i+=2,j++)
printf("%*s",j,"***********\n"+(11-i));
getch();
}
这是输出金字塔的程序,crakerwang高手解释如下:


printf("%*s",n,"********"+(m))
n控制的是输出的宽度,m控制的是从左边数起的不显示的字符个数
比如printf("%*s",n,"abcdefgh"+(m))
那么输出的应该是10个宽度,不足的用空格表示,后面的*从左边数起有两个不显示所以输出应该是:
(4个空格)cdefgh


但我还是没有弄明白-->>
1、格式符中无*,而这里有,如何使用?..%*S
2、+又是如何使用来控制宽度的?教材上好像都没有说啊,晕了,再请来高手帮详细解释下此段程序,越详细越好,谢谢!

[此贴子已经被作者于2007-4-12 11:18:56编辑过]

搜索更多相关主题的帖子: printf 金字塔 输出 
2007-04-12 11:17
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 

我在C语言总结中有说明,你去看看,第七点


雁无留踪之意,水无取影之心
2007-04-12 11:19
冰天雪
Rank: 1
等 级:新手上路
威 望:1
帖 子:331
专家分:0
注 册:2007-2-27
收藏
得分:0 
以下是引用PcrazyC在2007-4-12 11:19:20的发言:

我在C语言总结中有说明,你去看看,第七点

7.printf("%*s\n",M,"字符串"+N)的用法说明

先看N的值,去掉字符串的左边N个字符,再看字符串的位数与M的值的大小
1.若字符串的位数比M大,然后输出
2.若字符串的位数比M小,就先在M的左边补空格,使字符串的长度等于M,然后输出
printf("%-*s\n",M,"字符串"+N),
先看N的值,去掉字符串的左边N个字符,再看字符串的位数与M的值的大小
1.若字符串的位数比M大,然后输出
2.若字符串的位数比M小,就先在M的右边补空格,使字符串的长度等于M,然后输出

这个在哪本教材上有啊?

2007-04-12 11:23
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 

我也不知道,我自己调试出来的,听别人说好像在C Primer Plus上有,我没买那本书,我只有谭浩强的书,所以不知道有没有


雁无留踪之意,水无取影之心
2007-04-12 11:28
福尔摩斯
Rank: 5Rank: 5
等 级:贵宾
威 望:12
帖 子:4011
专家分:370
注 册:2006-8-15
收藏
得分:0 
以下是引用冰天雪在2007-4-12 11:23:09的发言:

7.printf("%*s\n",M,"字符串"+N)的用法说明

先看N的值,去掉字符串的左边N个字符,再看字符串的位数与M的值的大小
1.若字符串的位数比M大,然后输出
2.若字符串的位数比M小,就先在M的左边补空格,使字符串的长度等于M,然后输出
printf("%-*s\n",M,"字符串"+N),
先看N的值,去掉字符串的左边N个字符,再看字符串的位数与M的值的大小
1.若字符串的位数比M大,然后输出
2.若字符串的位数比M小,就先在M的右边补空格,使字符串的长度等于M,然后输出

这个在哪本教材上有啊?

老谭《C程序设计》


自我放逐。。。
2007-04-12 11:30
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 
这本书上有,我都快翻穿了

雁无留踪之意,水无取影之心
2007-04-12 11:32
冰天雪
Rank: 1
等 级:新手上路
威 望:1
帖 子:331
专家分:0
注 册:2007-2-27
收藏
得分:0 
以下是引用PcrazyC在2007-4-12 11:28:56的发言:

我也不知道,我自己调试出来的,听别人说好像在C Primer Plus上有,我没买那本书,我只有谭浩强的书,所以不知道有没有

图片附件: 游客没有浏览图片的权限,请 登录注册

[此贴子已经被作者于2007-4-12 11:43:18编辑过]



T5kTzClR.jpg (50.69 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册
2007-04-12 11:42
冰天雪
Rank: 1
等 级:新手上路
威 望:1
帖 子:331
专家分:0
注 册:2007-2-27
收藏
得分:0 
以下是引用福尔摩斯在2007-4-12 11:30:13的发言:

老谭《C程序设计》

我也翻了底朝天,也没有看到老谭在哪写到?
不过看了C Primer Plus可以理解到:*在%*S中的作用就是可以当变量使用 控制宽度及精度

而字符串的控制上("**********"+N)它对应的整个字符串S,那 这里的N又如何控制呢?又查不到了,晕~~

2007-04-12 12:13
I喜欢c
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:64
帖 子:1749
专家分:0
注 册:2007-3-2
收藏
得分:0 

N就当字符数组下标塞...


 我是指针,却丢失了目标地址!          我是循环,却缺少了结束条件!      我是函数,却没有人来调用!   
2007-04-12 12:44
冰天雪
Rank: 1
等 级:新手上路
威 望:1
帖 子:331
专家分:0
注 册:2007-2-27
收藏
得分:0 
以下是引用I喜欢c在2007-4-12 12:44:05的发言:

N就当字符数组下标塞...

问题是:去掉字符串左边的N个字符~

这个不会是Printf 的高级运用吧?

2007-04-12 12:56
快速回复:继续请教--->关于printf()的输出问题
数据加载中...
 
   



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

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