所谓的自打印程序是指这样一个程序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<