打印自身源代码的程序

无意当中看到了这样一个问题:

任意选定一个语言写一个打印自身源代码的程序,这个程序不允许读取或者写其他文件的数据,程序必须是完全独立的。

很有趣吧?我正在学习C语言,这个问题是我在查找其他资料时看到的,这激发了我的兴趣,我躺在床上想了很久,没有一点头绪,额,最后抱着认为不大可能实现的想法睡着了······

回到正题,我在网上搜索了有关资料以后,知道了如何去写出这样的一个程序,原理是定义一个关于源代码自身的串string,然后加入把string改写成程序自身的算法编码,最后输出string。由于c语言中有个Printf(),实现这个代码就十分的方便,由于我还不会其他语言,所以只把c的代码贴下:

#include <stdio.h>
int main()
{
char *s = "#include <stdio.h>%cint main(){char *s = %c%s%c; printf( s, 10, 34, s, 34 ); return 0; }";
printf( s, 10, 34, s, 34 ); return 0;
}  

需要注意的一点是,这个代码应该有指明打印的位置与打印多少。

原文地址:https://www.cnblogs.com/Sherlock-J/p/12926079.html