如何写一个程序打印出程序本身的代码
发布网友
发布时间:2022-04-20 22:22
我来回答
共3个回答
热心网友
时间:2023-06-25 00:25
要写一个可移植的自再生的程序是件很困难的事, 部分原因是因为引用和字符集的难度。
这里是个经典的例子 (应该以一行表示的, 虽然第一次执行后它后自修复):
char*s="char*s=%c%s%c;main(){printf(s,34,s,34);}";
main(){printf(s,34,s,34);}
这段程序有一些依赖, 忽略了 #include <stdio.h>, 还假设了双引号 " 的值为34, 和 ASCII 中的值一样。
这里还有一个有 James Hu 发布的改进版:
#define q(k)main(){return!puts(#k"\nq("#k")");}
q(#define q(k)main(){return!puts(#k"\nq("#k")");})
热心网友
时间:2023-06-25 00:26
首先,你要写一个完整的程序。
二、把你写的程序代码保存为txt文本。
三、把文本导入res资源文件。
四、在程序中添加导出并显示res资源文件中txt资源的功能。
五、编译
热心网友
时间:2023-06-25 00:26
loj.ac的一道题目:
#include<cstdio>
const char*str="#include<cstdio>%cconst char*str=%c%s%c;%cint main(){printf(str,10,34,str,34,10);return 0;}";
int main(){printf(str,10,34,str,34,10);return 0;}