File Operations

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

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

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

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

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

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

#define NATIVE
#include <stdio.h>

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 <stdio.h>

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命令的一些参数:
这里写图片描述

原文地址:https://www.cnblogs.com/EIMadrigal/p/9248203.html