一个简单有趣的C语言自打印程序print-me.c
来源:互联网 发布:中国外运物流 知乎 编辑:程序博客网 时间:2024/06/05 01:54
所谓的自打印程序是指这样一个程序A:当A编译运行后,其运行结果就是将A程序的源代码输出出来。
乍看这个问题,很容易直接想到的方法就是通过读文件的方法将其源代码打印出来。但是如果限定仅仅用C的printf函数,不用其他的函数,该如何处理呢?
下面是一个C语言的实现,print-me.c的源程序如下:
int main(){char *me="int main(){char *me=%c%s%c;printf(me,34,me,34);}";printf(me,34,me,34);}
编译运行如下:
[root@jocks asm80]# gcc print-me.c -o print-me
[root@jocks asm80]# ./print-me
int main(){char *me="int main(){char *me=%c%s%c;printf(me,34,me,34);}";printf(me,34,me,34);}
简单说明:
34即是双引号”的ASCII的十进制表示。
程序的主体就是最后的printf(me,34,me,34);语句,其第一个参数me是格式化输出的控制串。随后的
34,me,34
是要输出的三个参数,两个34在格式串me的%c的位置输出两个双引号”,中间的me为在%s的位置输出
整个me字符串。理解了printf输出时的参数扩展的过程就基本理解了这个自打印程序的意义了,关于printf(me,34,me,34);的参数扩展用下图说明就一目了然了:
--本文结束--
- 一个简单有趣的C语言自打印程序print-me.c
- 一个简单的C语言小程序,打印九九乘法表
- 一个有趣的C程序
- 有趣的C语言,打印心形
- C中一个有趣的打印
- 一个简单的C语言程序
- 一个简单的C语言小程序
- 一个简单的C语言加密程序
- 有趣的C语言小程序
- 一个有趣的C语言代码
- 一个有趣的C语言问题
- 展示编写的一个有趣C程序
- 有趣的C语言
- 自写的一个开根号(开方)程序 c语言
- 一个有趣的C语言程序,谁说程序员不懂浪漫
- 一个比较有趣的c语言程序纠错,大家都可以学习下哦
- c语言:编写一个输出链表的函数print
- 怎样编写一个简单的C语言程序的全过程
- 让你的软件飞起来:RGB转为YUV
- 心情随记
- matlab转opencv经验
- 英语练习83 A heavy price
- cocos2d-x学习笔记15:cocos2d-x教程资源总结
- 一个简单有趣的C语言自打印程序print-me.c
- 字节对齐详解-----(一)字节对齐问题概述
- C# winform 只运行一个实例窗口
- 小屁孩的伤感空间日志_多谢伱的不珍惜让我学会死訫
- cocos2d-x学习笔记16:记录存储1:CCUserDefault
- xen 中的libxc(libxenctrl)库
- cocos2d-x学习笔记17:记录存储2:SQLite基本使用
- cannot find -lxxx
- mysql启动问题处理