- 论坛徽章:
- 2
|
本帖最后由 五岳之巅 于 2010-03-17 15:44 编辑
main() { char *s="main() { char *s=%c%s%c; printf(s,34,s,34); }"; printf(s,34,s,34); }
程序执行向外输出时的printf语句:
printf(s,34,s,34);
就相当于:
printf("main() { char *s=%c%s%c; printf(s,34,s,34); }",34,s,34);
然后,红色的%c%s$c将被后面的参数34,S,34替换,就变成了输出:
"main() { char *s=34%s34; printf(s,34,s,34); }",而其中的s被替换为"main() { char *s=%c%s%c; printf(s,34,s,34); }",所以最后向屏幕上打印:
"main() { char *s=34%s34; printf(s,34,\"main() { char *s=34%s34; printf(s,34,s,34); }\",34); }"
就是程序自己罗,挺好玩的,构思很巧妙。 |
|