我几天前遇到过这个问题。我想知道的是如何打印C程序的内容作为输出。考虑以下小c代码snipet:
#include<stdio.h>
#include<conio.h>
void main()
{
int a;
int b;
int sum;
}
如何修改上面的代码,以便在执行时显示相同的代码内容: 输出应该是:
#include<stdio.h>
#include<conio.h>
void main()
{
int a;
int b;
int sum;
}
我希望我的问题不值得怀疑。
答案 0 :(得分:2)
#include <stdio.h>
const char*s="#include <stdio.h>%cconst char*s=%c%s%c;%cint main(void){printf(s,10,34,s,34,10,10);}%c";
int main(void){printf(s,10,34,s,34,10,10);}
答案 1 :(得分:2)
我将如何做到这一点:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
FILE *f = fopen(__FILE__, "r");
if (!f)
exit(-1);
fseek(f, 0, SEEK_END);
long n = ftell(f);
fseek(f, 0, SEEK_SET);
char *buf = malloc(n + 1);
if (!buf)
exit(-1);
if (fread(buf, n, 1, f) < 1)
exit(-1);
buf[n] = 0;
puts(buf);
free(buf);
fclose(f);
return 0;
}
答案 2 :(得分:0)
您编写的代码永远不会编译为生成与其输出相同的代码的程序:这应该是清楚的,因为该代码根本不打印任何东西!所以它肯定不会打印你想要的整个C文件。
您正在寻找: