打印c程序的内容作为其输出

时间:2013-11-20 06:46:06

标签: c

我几天前遇到过这个问题。我想知道的是如何打印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;
}

我希望我的问题不值得怀疑。

3 个答案:

答案 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文件。

您正在寻找:

http://en.wikipedia.org/wiki/Quine_%28computing%29