南昌大学|中正论坛

 找回密码
 注册[30秒完成]
搜索
查看: 7685|回复: 1
打印 上一主题 下一主题

[软件] C/C++文件操作的简单应用

[复制链接]
跳转到指定楼层
1#
发表于 2007-8-25 09:26:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    在C/C++编写程序过程中,我们通常会遇到个问题, 就是输入测试数据多时,用手动输入效率不高,而且出错后又得重新来过:L 特别在ACM/ICPC这类比赛中,我们应尽量减少手动测试数据输入的时间,这时就会用到文件的输入输出流:
    来个简单的例子,从文件in.txt中输入两个整数,由小到大排序后输出到out.txt中,用空格分开。在这里假设输入文件和输出文件都存在:


[C源程序]
#include <stdio.h> /*要使用文件输入输出流必须的头文件*/

int main()
{
  FILE *in,*out;
  int a,b;
  in=fopen("in.txt","r");    /*以只读方式打开in.txt文件*/
  out=fopen("out.txt","w");  /*以只写方式打开out.txt文件*/
  while(fscanf(in,"%d%d",&a,&b)!=EOF) /*从in.txt文件中读取a,b的值,直到文件结束为止*/
    if(a<b)
      fprintf(out,"%d %d\n",a,b);  /*向out.txt文件输出结果*/
    else
      fprintf(out,"%d %d\n",b,a);
  fclose(in);    /*在C语言中必须加这一步,关闭文件防止文件被其它程序调用*/
  fclose(out);
  return 0;
}



[C++源程序]
#include <fstream> //要使用文件输入输出流必须的头文件
using namespace std;

ifstream inf("in.txt"); //定义文件输入流inf,并关联到in.txt
ofstream ouf("out.txt"); //定义文件输出流ouf,并关联到out.txt
int main()
{
  int a, b;
  inf>>a>>b; //inf中输入两个整数
  if(a<b)
    ouf<<a<<' '<<b<<endl; //ouf输出结果。
  else
    ouf<<b<<' '<<a<<endl;
  return 0;
}



上两程序会得到同一结果:

如果in.txt的内容为:
4 3

out.txt的内容为:
3 4

由此可以看出,对文本文件的输入输出与标准输入输出从格式上讲是一致的,只是需要定义一下文件输入输出流;C在定义时说明文件名后用户还需手动打开和关闭文件,而C++只需说明文件名即可,文件的打开与关闭动作是C++自动完成的,用户不必处理,这样就不会出现忘记关闭文件而丢失数据的情况了。
看得出C++在这方面处理得让程序员操作比较简单,但在使用过程中,如果是对大数进行处理的话个人觉得用C效率会比较高,小范围数据处理用C++比较方便:) 就看大家怎么用了:victory:

[ 本帖最后由 lefttime 于 2007-8-25 09:29 编辑 ]
2#
发表于 2007-8-25 09:31:55 | 只看该作者
嗯,不错,不看的话,差不多忘了
您需要登录后才可以回帖 登录 | 注册[30秒完成]

本版积分规则

手机访问本页请
扫描左边二维码
         本网站声明
本网站所有内容为网友上传,若存在版权问题或是相关责任请联系站长!
站长联系QQ:7123767   myubbs.com
         站长微信:7123767
请扫描右边二维码
www.myubbs.com

小黑屋|手机版|Archiver|南昌大学论坛 ( 琼ICP备10001196号-2 )

GMT+8, 2024-4-20 02:02 , Processed in 0.079333 second(s), 15 queries .

Powered by 高考信息网 X3.3

© 2001-2013 大学排名

快速回复 返回顶部 返回列表