| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2198 人关注过本帖
标题:printf()函数的用法问题
只看楼主 加入收藏
小快乐
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2004-9-10
收藏
 问题点数:0 回复次数:7 
printf()函数的用法问题

int f(int _) { return printf("%*s",4+_,"*******\n"+(4-_<<1));} int main(int _){return f(_)&&_<4&&main(_+1)&&f(_),_<5;}

着程序怎么理解?尤其是这个%*s这个printf这样写的以前都没见过.

printf("%d",x) 不是都是这样有一个""号,然后一个逗号,后面是内容.

这个怎么有两个的.

还有刚下拉一本英语书,用翻译看拉第一章竟然说printf()不是c语言的,而是什么标准加进去的.

思维混乱中.

搜索更多相关主题的帖子: printf 函数 英语 用法 
2004-10-10 19:08
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 

晕,我也没见过 %*s这样的组合的。

printf一般都有"",但不一定后面都要跟个,号,比如 printf("HAHA"'); 这样就没有


淘宝杜琨
2004-10-10 19:53
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
有点象我写的

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2004-10-10 20:17
crackerwang
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:833
专家分:0
注 册:2007-2-14
收藏
得分:0 
我也不是很明白,看起来象是控制了输出的宽度

2007-03-10 09:24
crackerwang
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:833
专家分:0
注 册:2007-2-14
收藏
得分:0 
刚才我上网找了一下,终于找到了
通常控制输出宽度我们是用printf("%nd","内容");
同时还有另外一种
printf("%*s",int width,"内容"),如果width大于“内容”的宽度是时候输出width的宽度;否则按照‘内容‘的宽度输出
例如:
printf("%*s\n",3,"******");
输出******;(3<6所以输出6位);
printf("%*s",8,"******");
输出:
[][]******([]代表空格,8>6所以输出8位)


2007-03-10 09:39
moonwalker
Rank: 1
等 级:新手上路
威 望:1
帖 子:909
专家分:2
注 册:2007-3-2
收藏
得分:0 
以下是引用小快乐在2004-10-10 19:08:00的发言:

int f(int _)
{
return printf("%*s",4+_,"*******\n"+(4-_<<1));}
int main(int _){return f(_)&&_<4&&main(_+1)&&f(_),_<5;}

着程序怎么理解?尤其是这个%*s这个printf这样写的以前都没见过.

printf("%d",x) 不是都是这样有一个""号,然后一个逗号,后面是内容.

这个怎么有两个的.

还有刚下拉一本英语书,用翻译看拉第一章竟然说printf()不是c语言的,而是什么标准加进去的.

思维混乱中.



printf()的确不是C语言的,C自己是没有输入输出函数的,所以才需要调用stdio.h库。应该是DOS的一个调用吧。

至于%*s我也在琢磨中,这个代码应该是“I喜欢C”写的那个输出“*”图形的吧,还真有些看不懂


“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!
2007-03-10 09:44
moonwalker
Rank: 1
等 级:新手上路
威 望:1
帖 子:909
专家分:2
注 册:2007-3-2
收藏
得分:0 
以下是引用crackerwang在2007-3-10 9:39:00的发言:
刚才我上网找了一下,终于找到了
通常控制输出宽度我们是用printf("%nd","内容");
同时还有另外一种
printf("%*s",int width,"内容"),如果width大于“内容”的宽度是时候输出width的宽度;否则按照‘内容‘的宽度输出
例如:
printf("%*s\n",3,"******");
输出******;(3<6所以输出6位);
printf("%*s",8,"******");
输出:
[][]******([]代表空格,8>6所以输出8位)

学无止境啊,想不到用了这么久的printf还有这么多门道


“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!
2007-03-10 09:47
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 

自己调试了一下这个用法,总结如下

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-03-10 12:06
快速回复:printf()函数的用法问题
数据加载中...
 
   



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

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