文件操作

在刷题测试程序时,为了避免每次都手工输入,我们可以把输入数据保存在文件中;为了避免输出太长,我们将输出也写入文件中,方便与标准答案文件进行比较。

文件使用一般有两种方法:输入输出重定向、fopen。

  • 重定向
    这种方法比较简单,只要在main()函数的开始加上:
freopen("c:\\tmp\\input.txt","r",stdin);  //输入来自于c:\tmp\input.txt
freopen("output.txt","w",stdout);

就可以将标准I/O(键盘输入、屏幕输出)转为读写文件。

万一比赛要求标准I/O,而你还想用文件操作来测试代码时,提交时切记删除重定向语句。

为了避免你忘记这茬,可以如下处理:

#define NATIVE
#include 

int main(int argc,char** argv)
{
#ifdef NATIVE
	freopen("input.txt","r",stdin);
	freopen("output.txt","w",stdout);
#endif
//your code here

return 0;
}

这样子,本机测试时可以使用重定向;如果要求标准I/O,提交时只需删掉#define NATIVE即可。

  • fopen
    如果比赛要求使用文件读写,但禁止重定向方式,这时可以使用fopen方式:
#include 

int main(int argc,char** argv)
{
	FILE *fin, *fout;
	fin = fopen("input.txt"."rb");
	fout = fopen("output.txt","wb");
	
	int a;

	//把scanf改为fscanf,把printf改为fprintf
	fscanf(fin,"%d",&a);
	fprintf(fout,"%d",a);
	//your code here

	fclose(fin);
	fclose(fout);
	
	return 0;
}

这时候,如果要求标准I/O,只需要:

fin = stdin;
fout = stdout;

最后,简单说下文件比较(windows下):
进入cmd,如果两个文件在同一目录:

fc 1.txt 2.txt

如果两个文件不在同一目录:

fc "c:\1.txt" "d:\2.txt"

可以使用fc /?查看fc命令的一些参数:
文件操作_第1张图片

你可能感兴趣的:(file,operation,acm,语言特性)