【有趣的发现】 —— 打印自身源程序

最近看“找规律的打印表”问题,就无意间看到了这个“打印自身源程序”问题,不禁感叹有时候代码真的神奇呀,学的越多就觉得自己知道的越少~

作为真正的 quine ,有一些约定:程序不能接受输入或者是打开文件,因为那样就可以直接输入源代码或者是把源代码文件直接打开再重新打印出来,就没有什么意思了;同时,一个完全空白的程序(产生完全空白的输出,即没有输出)也并不能称作 quine 。

起始,我们可以先不要要求那么高,先上前菜,开开胃~

cmd指令输出源程序

  • 首先找到自己的程序,右键点击“属性”,复制“位置”
    在这里插入图片描述
  • 点击“搜索键”,输入"cmd",打开命令行窗口
    在这里插入图片描述
  • 输入cd和空格,再将自己刚刚复制的“位置”粘贴,注意这里需要把“位置”中的“\”换成“\”
    在这里插入图片描述
  • 输入type 文件名.c(我这里文件名是print)

c语言打印自身源程序

一个完整的自打印程序至少保含两部分:信息的描述和执行体。这两者互相表达。在描述部分,用字符串来存储执行部分的代码。而执行体的代码则打印这个描述字符串。通常为了完整输出程序代码,要在执行体内为描述字符串再拼接一些修饰性的内容,这些内容被看作是执行体的一部分。而代码的打印也要打印为两部分,才能将描述文本打印为一个新的描述文本和一个新的执行体。

  • 这个据说是用 C 语言写成的 quine 中最简短的一个是由 Vlad Taeerov 和 Rashit Fakhreyev 所写成的仅包含 64 个字符的程序:(不得不说是真的牛)
main(a)
{
    printf(a,34,a="main(a){printf(a,34,a=%c%s%c,34);}",34);
}

在这里插入图片描述

  • 下面再给出一个流传已广的c自打印程序:
int main()
{
    char *s="int main(){char*s=%c%s%c;printf(s,24,s,24);return 0;}";
    printf(s,24,s,24);
    return 0;
}

在这里插入图片描述
PS:看完后直呼神奇的代码!!!!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值