freopen函数 输入输出重定向

平时我们调试的时候,总是要一个个样例输入,再看输出。
但是如果我们输入量比较大的时候,虽然可以用复制功能,但是如果输出内容太多,屏幕显示不了,对于我们调试就很不方便。

这里介绍一下freopen函数的使用。下面先看一个样例:
输入10个数,再输出10个数。
一般我们会这样写:

#include"stdio.h"

int main()
{
    int n=10;
    int a[20];
    for(int i=1;i<=n;i++)
        scanf("%d",&a[i]);

     for(int i=1;i<=n;i++)
        printf("%d\n",a[i]);

    return 0;
}

但是如果数据很多呢?或者多组输入呢?
我们可以换下面的姿势:

#define TEST

#include"stdio.h"

int main()
{
    #ifdef TEST
    freopen("in.txt","r",stdin);
    freopen("out.txt","w",stdout);
    #endif // TEST

    int n=10;
    int a[20];
    for(int i=1;i<=n;i++)
        scanf("%d",&a[i]);

     for(int i=1;i<=n;i++)
        printf("%d\n",a[i]);

    #ifdef TEST
    fclose(stdin);
    fclose(stdout);
    #endif // TEST
    return 0;
}

与前面相比,多了个宏定义TEST,后面是当TEST被定义了执行的语句。
stdin是我们的输入流,stdout是我们的输出流。
我们分别用文件的只读和写来对他们重新定向。
作用就是in文件的内容只需要我们把之前的内容准备好就行了。
然后每次运行完打开out文件就能看到我们输出的结果了。
最后记得关闭文件,否则文件会因为被占用而可能出现一系列问题。

运行时我们看不到屏幕有任何输入输出。
这里写图片描述

在与工程同目录下,我们先准备好in.txt文件,并输入我们需要输入的数据,关闭保存。
运行程序后可以看到多了个out.txt文件,打开就可以看到我们原本要输出到屏幕的内容。
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值