一个简单有趣的C语言自打印程序print-me.c

本文介绍了一个巧妙的C语言自打印程序print-me.c的实现,该程序通过printf函数自身实现了源代码的输出。核心在于使用printf的格式化字符串和ASCII码,以%d和%s的方式嵌套引用自身,达到自打印的效果。理解这个程序的关键在于掌握printf函数参数的展开过程。
摘要由CSDN通过智能技术生成

所谓的自打印程序是指样一个程序A:当A编译运行后,其运行结果就是将A程序的源代码输出出来。

乍看这个问题,很容易直接想到的方法就是通过读文件的方法将其源代码打印出来。但是如果限定仅仅用C的printf函数,不用其他的函数,该如何处理呢

下面是一个C语言的实现,print-me.c的源程序如下:

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

编译运行如下:

[root@jocks asm80]# gcc print-me.c -o print-me

[root@jocks asm80]# ./print-me<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值