文件读写

方法一(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)并重新写入文件速度测试比较如表

读写方法freopenFILE*fstream
用时(s)0.340.060.06
内存(kb)888616872
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值