Quine.c

Quine

什么是Quine?根据Wiki上的定义,Quine是一个计算机程序,它不需要输入,却可以将自己的源代码输出。

一般的Quine程序结构

Quine程序一般由两部分组成,一部分是代码,另一部分是数据(以保存源代码)。在最常见的Quine中,程序会将自己输出两次,一次用来填充代码部分,一次用来填充数据部分

Quine案例分析

来看下面这个Quine

char*f="char*f=%c%s%c;main(){printf(f,34,f,34,10);}%c";main(){
   printf(f,34,f,34,10);}

这个Quine的优点在于,精简,我们可以看到,程序将自己输出了两次,很巧妙地利用了printf函数的格式化,将“数据”填充在了“代码”之中。需要注意的是,这里只能用34表示双引号而不能直接把双引号写到字符串里,否则就需要转义,一旦需要转义,那么程序的代码便多了两个斜杠,为了输出这两个斜杠,就需要继续在数据部分插入转移的斜杠……如此往复,会发现这样行不通,程序不可能输出自己。因此,在一般的Quine中,我们避免使用字符串转义,它有可能为我们带来不必要的麻烦。

我自己编写的Quine

为了更好地理解这一思想,我自己也编写了一段Quine程序,如下:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值