南昌大学|中正论坛
标题:
C/C++文件操作的简单应用
[打印本页]
作者:
lefttime
时间:
2007-8-25 09:26
标题:
C/C++文件操作的简单应用
在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 编辑
]
作者:
iwxiaot
时间:
2007-8-25 09:31
嗯,不错,不看的话,差不多忘了
欢迎光临 南昌大学|中正论坛 (http://ncu.myubbs.com/)
Powered by Discuz! X3.3