利用C语言重定向函数freopen兑现交换两个文本文件内容
利用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); }