当前位置: 首页 >> 程序设计 >> 克隆自己的C语言程序
 

克隆自己的C语言程序

作者:      来源:hellofalcon.cublog.cn     发表时间:2006-12-18     浏览次数:      字号:    

Declaration
  
  该程序是我在参考其他人的代码后修改的,但原链接已经无法找到。

Text

  这是一个可以把自己的源代码输出的一个C程序,因为这有点类似于“克隆技术”,所以我就堂而皇之的取了“一个会克隆自己的C语言程序”这个题目。

Code

[1] filename -- cloneitself.c

#include <stdio.h>
int main()
{
        char self[] = "#include <stdio.h>%cint main()%c{%c%cchar self[] = %c%s%c;%c%cprintf(self,10,10,10,9,34,self,34,10,9,10,9,10);%c%creturn 0;%c}%c";
        printf(self,10,10,10,9,34,self,34,10,9,10,9,10,10);
        return 0;
}


Demo

shell> ./cloneitself
#include <stdio.h>
int main()
{
        char self[] = "#include <stdio.h>%cint main()%c{%c%cchar self[] = %c%s%c;%c%cprintf(self,10,10,10,9,34,self,34,10,9,10,9,10);%c%creturn 0;%c}%c";
        printf(self,10,10,10,9,34,self,34,10,9,10,9,10);
        return 0;
}

Remark

  如果知道9,10,34对应的字符分别是制表符,换行,双引号,那么就不难理解这个程序拉。

Extension

  如果无心注意,我们可能不会想到一个程序可以完全产生一份自己的源代码。稍微拓展的想象一下,程序自己还可以做的事情有很多,比如自压缩/解压、“自杀”(这个程序具体见“感情脆弱的C程序”一帖)、自我复制和传播(病毒特征)等等功能。是不是可以想象——也许有一天,程序有了自我学习和思考的能力(人工智能)。

责任编辑 webmaster

 
 
 
 
 
评论更多>>
 
 
 
发表
 
姓名: QQ:
性别: MSN:
E-mail: 主页:
评分: 1 2 3 4 5
评论内容:
验证码:
  
  • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
  • 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。
  •