码迷,mamicode.com
首页 > 其他好文 > 详细

freopen函数 输入输出重定向

时间:2015-08-11 12:17:08      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:调试

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

这里介绍一下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文件,打开就可以看到我们原本要输出到屏幕的内容。
技术分享

版权声明:本文为博主原创文章,未经博主允许不得转载。

freopen函数 输入输出重定向

标签:调试

原文地址:http://blog.csdn.net/qq_27508477/article/details/47417009

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!