当前位置: 代码迷 >> C语言 >> [求助]用C写一段代码,输出自己的源代码!
  详细解决方案

[求助]用C写一段代码,输出自己的源代码!

热度:244   发布时间:2005-07-17 00:28:00.0
[求助]用C写一段代码,输出自己的源代码!
当程序运行的时候,将会输出一些字符,这些字符恰好是这个程序的代码本身。

请注意程序运行时将不能访问到源程序(系统已经将源代码删除)。

[此贴子已经被作者于2005-7-17 0:32:43编辑过]

搜索更多相关的解决方案: 源代码  输出  

----------------解决方案--------------------------------------------------------
如果遇到printf函数呢?
遇到printf()函数的话,那么程序肯定先要输出函数原形printf(),然后参数里面写%s,这个%s又是printf("%s")不就无限循环了吗?
----------------解决方案--------------------------------------------------------
比如这个程序:
#include<stdio.h>
main()
{
        printf("Hello,world!");
}

如果要把的源代码输出,那么就是:
#include<stdio.h>
main()
{
       printf("#include<stdio.h>\nmain()\n{\n        printf("Hello,world!");\n}");
}

但是注意:这个时候程序的源代码已经不是之前的:

#include<stdio.h>
main()
{
        printf("Hello,world!");
}

了,而是:

#include<stdio.h>
main()
{
       printf("#include<stdio.h>\nmain()\n{\n        printf("Hello,world!");\n}");
}

所以程序输出的实际上不是源代码。又要修改,但是修改后又不是源代码了。。。。。。
----------------解决方案--------------------------------------------------------
可以试一试其他办法的呀!
比如调用内存....
----------------解决方案--------------------------------------------------------

我写了个,目前只想到这么做。。。 #include <stdio.h>

#define Line1 "#include <stdio.h>" #define Line2 "int main()" #define Line3 "{" #define Line4 "printf(\"Hello,world\\n\");" #define Line5 "return 0;" #define Line6 "}"

int main() { FILE *fp=fopen("MySrc.c","w"); printf("Hello,world\n"); fprintf(fp,"%s\n%s\n%s\n%s\n%s\n%s\n",Line1,Line2,Line3,Line4,Line5,Line6); fclose(fp); return 0; }


----------------解决方案--------------------------------------------------------

按照题目要求,楼上的程序输出结果应该是: #include <stdio.h>

#define Line1 "#include <stdio.h>" #define Line2 "int main()" #define Line3 "{" #define Line4 "printf(\"Hello,world\\n\");" #define Line5 "return 0;" #define Line6 "}"

int main() { FILE *fp=fopen("MySrc.c","w"); printf("Hello,world\n"); fprintf(fp,"%s\n%s\n%s\n%s\n%s\n%s\n",Line1,Line2,Line3,Line4,Line5,Line6); fclose(fp); return 0; }


----------------解决方案--------------------------------------------------------
用#define把程序中出现的语句全部添加一便,我这个只是简单演示一下思路。。。
----------------解决方案--------------------------------------------------------
干吗不把整个程序存进全局字符变量数组中呢?直接打印字符数组出来,
----------------解决方案--------------------------------------------------------
或者利用文件
----------------解决方案--------------------------------------------------------
不知道牛虻有没有碰到过,我做过一个程序就是将许多在程序中需要用到的字符串存入一个全局数组,但程序运行的时候出现Stack overflow的错误,不知怎么办。。。
----------------解决方案--------------------------------------------------------
  相关解决方案