标题: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: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册: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: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册: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



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




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

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