文件读写

来源:互联网 发布:vc 中mfc编程方法 编辑:程序博客网 时间:2024/06/03 09:15

方法一(freopen)

此方法主要是利用freopen将输入、输出重定向到文件中。例如下面的程序从sum.in文件中读取两个整数,计算出两整数之和后输出到sum.out文件中。

//freopen方式读写文件#include <iostream>#include <cstdio>#include <cstdlib>//此行必加,否则linux下可能出问题 using namespace std;int main(){  int a,b;    freopen("sum.in","r",stdin); //从sum.in中读取数据  freopen("sum.out","w",stdout);//输出到sum.out文件  cin>>a>>b;  cout<<a+b<<endl;  //system("pause"); 一定要将此句注释掉   return 0;}

freopen的说明:

只需加入9、10行语句即可很方便地实现读写文件数据的功能。源代码及读写文件名需根据题意严格定义。


方法二(FILE*)

此方法虽然比方法一复杂,但该方法不属于文件重定向语句,且读取速度快,因此在比赛中推荐使用此方法。

//读写文件方法2 #include <iostream>#include <cstdlib>int main(){ int i,len=0,temp[100]; FILE *in=fopen("a.txt","r");//指针指向输入文件 FILE *out=fopen("b.txt","w");//输出文件格式  for(i=0;!feof(in);i++)//如未到文件末尾 {   fscanf(in,"%d",&temp[i]);//读取文件中的数据   len++; } for(i=0;i<len-1;i++)  //写入文件   fprintf(out,"%d ",temp[i]); fclose(in);//关闭文件流 fclose(out);//关闭文件流}

FILE的说明:

每个被使用的文件都在内存中开辟一个区,用来存放文件的有关信息(如文件名、状态及所在位置等)。这些信息是保存在一个结构体类型的变量中的。该结构类型由系统定义,取名FILE。文件读写完毕后需使用fclose函数关闭文件流。

feof函数的说明:

feof(in)中in是文件指针。它只有两个返回值。当遇到文件结束符(EOF)时返回1,否则返回0。所以第九行中!feof(in)的意思是,若feof(in)未遇到EOF,则一直执行for循环。

fprintf函数和fscanf函数的说明:

fprintf函数和fscanf函数是格式化读写函数,但读写对象为文件。


方法三(fstream)

此方法使用了fstream头文件,推荐C++学习者使用。请看下例:

//读写文件方法3 #include <iostream>#include<fstream>using namespace std;int main(){  int a,b,c;    ifstream fin("in.txt");  ofstream fout("out.txt");  fin>>a>>b>>c;  fout<<a*b*c<<endl;//注意cin与cout的变化  fin.close();  fout.close();  return 0;}

读取10万个数据(0≤数据≤399)并重新写入文件速度测试比较如表

读写方法 freopen FILE* fstream 用时(s) 0.34 0.06 0.06 内存(kb) 888 616 872
原创粉丝点击