| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1943 人关注过本帖
标题:C语言中printf函数的问题
只看楼主 加入收藏
hiter727
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2016-8-19
结帖率:0
收藏
已结贴  问题点数:20 回复次数:6 
C语言中printf函数的问题
为什么下面程序运行结果与源代码一模一样?
#include
main(){char*a="main(){char*a=%c%s%c;printf(a,34,a,34);}";printf(a,34,a,34);}

“printf(a,34,a,34)”这一句我没有想明白,百科上说“printf()函数的调用格式为: printf("<格式化字符串>", <参量表>)”,但这里没有“格式化字符串”,我也不懂参量表是什么东东。

我现在的想法是由于字符串本身就是地址,printf(a,34,a,34)中的a就是"main(){char*a=%c%s%c;printf(a,34,a,34);}"的地址,但我改成printf(a)后,打印会有乱码。另外printf中的34起到了什么作用?

小弟刚刚学习C语言,还请各位指教,先谢谢了!
搜索更多相关主题的帖子: 源代码 C语言 字符串 
2016-08-19 19:42
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:7 
这样对照一下:
    char *a = "main(){char*a=%c%s%c;printf(a,34,a,34);}";
    printf(a,34,a,34);
    printf("\n");
    printf("main(){char*a=%c%s%c;printf(a,34,a,34);}", '"', a, '"');
2016-08-19 20:18
hiter727
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2016-8-19
收藏
得分:0 
回复 2楼 吹水佬
豁然开朗啊!谢谢老师 我忘了34是ascii码来解释%c
另外问下,如果我就想输出字符串“%s”或“%c”,要怎么办呢?
2016-08-19 21:34
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
回复 3楼 hiter727
printf("%%s%%c");
2016-08-19 22:14
单传利
Rank: 1
等 级:新手上路
帖 子:3
专家分:7
注 册:2015-8-9
收藏
得分:7 
    char*a="main(){char*a=%s%s%s;printf(a,34,a,34);}";
    printf(a,"%s",a,"%c");
把%s和%c当成字符串处理就好了,这样就会有%s和%c了
2016-08-19 22:23
hiter727
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2016-8-19
收藏
得分:0 
回复 5楼 单传利
谢谢:)
2016-08-20 11:12
周叉叉
Rank: 2
等 级:论坛游民
威 望:1
帖 子:5
专家分:10
注 册:2016-8-17
收藏
得分:7 
这书写格式...
2016-08-23 17:04
快速回复:C语言中printf函数的问题
数据加载中...
 
   



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

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