2007年6月9日星期六

输出自己的代码(Print Out Your SourceCode)

和OI没什么太大关系,算是熟悉语言了。
很久以前就看到了这个问题,看网上流传比较广的是这一段代码:
#include <stdio.h>
char*f="#include <stdio.h>%cchar*f=%c%s%c;%cint main(){printf(f,10,34,f,34,10,10);return 0;}%c";
int main(){printf(f,10,34,f,34,10,10);return 0;}
仔细看看就知道这个方法其实挺简单。我自己先了一个方法,用C/C++的宏__FILE__,这个方法貌似比较BT,具体C/C++怎么实现的这个宏我也不太清楚,哪位高人指点一下?
#include <fstream>

using namespace std;

int main()
{
ifstream fin(__FILE__);
ofstream fout("out.cpp");
char temp;
while (!fin.eof())
{
fin.get(temp);

fout<<temp;
}
return 0;
}
到网上一找,找到很多更BT的代码,给链接