利用C语言重定向函数freopen实现交换两个文本文件内容
/*** Autor: Wangzhicheng** E-Mail: 2363702560@qq.com** Date: 2012/10/4** Description: 交换两个文件内容*/#include <iostream>#include <cstdlib>#include <cstdio>#include <string>using namespace std;/*将源文件写入目标文件中*/inline static bool WriteToFile(string SrcFilename,string DesFilename) {FILE *stream;stream=freopen(SrcFilename.c_str(),"r",stdin); //将源文件内容重定向到标准输入流 /*这意味着标准输入流指向文件SrcFilename,对标准输入流的读取实际上是对SrcFilename的读取*/if(!stream) return false;stream=freopen(DesFilename.c_str(),"w",stdout); //将目标文件内容重定向到标准输出流/*这意味着标准输出流指向文件DesFilename,对标准输出流的写入实际上是对DesFilename的写入*/if(!stream) return false;char c;while(scanf("%c",&c)!=EOF) printf("%c",c); //从输入流读取字符,然后写入输出流/*这意味着从源文件读取内容,然后写入目标文件*/fclose(stdin);fclose(stdout);return true;}inline static void SwapFile(string &filename1,string &filename2) {string tmpfilename="e:\\tmp.txt"; //指定临时文件名cout<<"请输入第一个文件名(全路径):";cin>>filename1;cout<<"请输入第二个文件名(全路径):";cin>>filename2;if(!WriteToFile(filename1,tmpfilename)) return;if(!WriteToFile(filename2,filename1)) return;if(!WriteToFile(tmpfilename,filename2)) return;cout<<"文件交换成功!"<<endl;}void main() {cout<<"Written By Wangzhicheng!"<<endl;string filename1,filename2;SwapFile(filename1,filename2);}