读书人

利用C语言重定向函数freopen兑现交换两

发布时间: 2012-10-16 09:57:37 作者: rapoo

利用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);}

读书人网 >C语言

热点推荐