怎样写一个输出自己源代码的程序

要写一个可移植的自我再生的程序是件很困难的事, 部分原因是因为引用和字符集的难度。 
这里是个经典的例子 (应该以一行表示的, 虽然第一次执行后它后自我修复): 

    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")");})

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值