当前位置: 代码迷 >> C语言 >> 能输出自己代码的程序
  详细解决方案

能输出自己代码的程序

热度:154   发布时间:2007-02-27 01:33:44.0
还是搞不动
[QUOTE]
char *s="#include<stdio.h>\nint main()\n{\n\tprintf(%chello world%c);\n}";

[/QUOTE]
这段是怎么输出的
----------------解决方案--------------------------------------------------------
以下是引用wuxiaoqi119在2007-2-27 1:33:44的发言:
还是搞不动

char *s="#include<stdio.h>\nint main()\n{\n\tprintf(%chello world%c);\n}";


这段是怎么输出的

我那个脱离题意,翻上面的贴子,上面有写的。
----------------解决方案--------------------------------------------------------
to:shuaiye
深入理解计算机系统 到那里可以下啊??
谢谢拉朋友
----------------解决方案--------------------------------------------------------

在百度上搜~~
有滴..


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

我写了一个输出源码程序的程序

#include<stdio.h>
main(int argc ,int *argv[])
{
FILE *fp;
int c = 0;
char *ch;

ch = argv[0];
c = strlen(ch);

ch[c-3] = 'c';
ch[c-2] = 0;

if((fp = fopen(ch,"rb")) == NULL)
{
puts("Open file error!");
getch();
exit(1);
}

while((c = fgetc(fp)) != -1)
printf("%c",c);

fclose(fp);
getch();
}


但是这个程序有BUG 就是如果不是在保存后就编译运行就会输出错误结果


----------------解决方案--------------------------------------------------------
不能用文件函数的
----------------解决方案--------------------------------------------------------
???
什么情况
----------------解决方案--------------------------------------------------------
这个题是Knocker出的,前提是不能用文件部分
----------------解决方案--------------------------------------------------------

我能问一下这是怎么实现的(理论知识),我弄不出来!


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

于能输出自己程序的代码的程序之个人理解

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

终于看懂了这个程序:
我来解释一下:
上面的红色的部分是定义一个字符型的指针a,指向的是引号里面的字符串部分;
上面的蓝色的部分是输出字符型指针a所指向的地址里的内容,也就是引号里的内容;
printf(a,10,10,10,9,34,a,34,10,9,10,10,10);
这里小括号内的第一个a是作为输出字符串的参数传入的,后面的
10,10,10,9,34,a,34,10,9,10,10,10都是作为输入格式控制的参数输入的,也就是对应着#include<stdio.h>%cmain()%c{%c%cchar *a=%c%s%c;%c%cprintf(a,10,10,10,9,34,a,34,10,9,10,10,10);%c%cgetch();%c}里面的那么%c,%s,这些数字按字符输出,它们对应的ASCII码刚好是:
9 制表符
10 换行符
34 引号(")

中间的那个a是作为%s的字符串内容传入的!

小弟是这样理解的,有什么不对的地方请各位大虾请教一哈!!

[URL=http://hi.baidu.com/frinklyn]本人百度博客[/URL]


----------------解决方案--------------------------------------------------------
  相关解决方案