|
在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 编辑 ] |
|