用C语言编写一个程序,能够将程序自身显示出来

用C语言编写一个程序,能够将程序自身显示出来。(程序越短越好)
     即:由源程序编译连接生成可执行文件,在源程序已删除的情况下,运行可执行文件,能将源程序的内容显示出来。
     如:源程序aaa.c,编译连接生成aaa.exe,然后删除源程序aaa.c,再运行aaa.exe,则在屏幕上显示源程序aaa.c的全部内容,一模一样,包括回车、换行等。
      注:要求在没有源程序的情况下,运行可执行文件,能够显示原来源程序的内容。因为没有源程序,可执行文件就无法再读取源程序,另外也不需可执行文件来删除源程序。
      (不能使用文件操作来读取源程序)


#include<stdio.h>
main()
{
char *c="#include<stdio.h>%cmain()%c{%cchar *c=%c%s%c;%cprintf(c,10,10,10,34,c,34,10,10);%c}";
printf(c,10,10,10,34,c,34,10,10);
}

这个版本的核心就在于printf的参数上:
大家知道printf第一个参数是个字符串,定义了本次输出的格式,注意其中有一个%s,此处它匹配的参数正好是那个字符串本身,因此达到了把这个字符串输出两次的目的,其他部分只要照着main函数的样子写就行了,注意下不要使用引号和转义字符/,不然会给你带来很大的困扰。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值