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文件,打开就可以看到我们原本要输出到屏幕的内容。

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

时间: 2024-10-09 13:27:45

freopen函数 输入输出重定向的相关文章

【技巧】freopen()函数在ACM中的应用

在做题目的过程当中,我们需要在本机上调试,当然我们可以把测试用例一遍一遍粘贴复制,也经常会遇到测试用例很多的时候,输入和输出混了,还要去找输出和题目当中的对照.另外,有的时候题目给的测试用例太少,需要自己或者队友给想几个临界条件,自己动手多添加几个测试用例,每测一遍都要动手输入的话麻烦又浪费时间.这时候freopen()上场了. 函数名:    freopen() 函数声明:  FILE  *freopen(const char *path,const char *mode,FILE *stre

freopen()函数测试数据

当我们求解acm题目时,通常在设计好算法和程序后,要在调试环境(例如VC等)中运行程序,输入测试数据,当能得到正确运行结果后,才将程序提交到oj中.但由于调试往往不能一次成功,每次运行时,都要重新输入一遍测试数据,对于有大量输入数据的题目,输入数据需要花费大量时间. 使用freopen函数可以解决测试数据输入问题,避免重复输入,不失为一种简单而有效的解决方法. 函数名:freopen 声明:FILE *freopen( const char *path, const char *mode, FI

freopen函数的使用以及freopen与fopen的区别

freopen函数的使用:参见这篇博客https://www.cnblogs.com/moonlit/archive/2011/06/12/2078712.html 当我们求解acm题目时,通常在设计好算法和程序后,要在调试环境(例如VC等)中运行程序,输入测试数据,当能得到正确运行结果后,才将程序提交到oj中.但由于调试往往不能一次成功,每次运行时,都要重新输入一遍测试数据,对于有大量输入数据的题目,输入数据需要花费大量时间. 使用freopen函数可以解决测试数据输入问题,避免重复输入,不失

Python 输入输出重定向

#基于Python2.7 #若是想Python做到和C++中freopen一样的输入输出重定向效果,即从文件输入输出,可以在程序中加入以下代码 1 import sys 2 sys.stdin=open('in.txt','r') 3 sys.stdout=open('out.txt','w')

freopen()函数

freopen函数通过实现标准I/O重定向功能来访问文件,而fopen函数则通过文件I/O来访问文件. freopen函数在算法竞赛中常被使用.在算法竞赛中,参赛者的数据一般需要多次输入,而为避免重复输入,使用重定向. 1 freopen 函数说明 2 3 函数名: freopen 4 功 能: 实现数据重定向到文件中 5 用 法: FILE *freopen(const char *filename, const char *mode, FILE *stream); 6 返回值: 成功,则返回

[转]C语言文件输入/输出ACM改进版(freopen函数)

C语言文件输入/输出ACM改进版(freopen函数) 2009年5月27日 10:379,457 浏览数发表评论阅读评论 文章作者:姜南(Slyar) 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作. 昨天发了一篇<C语言 使用文件输入/输出数据>,使用的是最普通的文件输入/输出方法,Felix大牛随后给了一种更简单的改进方法,在ACM中应用很广,而且超赞,现在来介绍一下. 这次用到的文件打开函数不再是fopen,而是stdio.h中包含的另一个函数fr

使用Shell脚本编译运行C++源码 输入输出重定向

在写C++控制台程序的时,如果使用Xcode或者Visual Studio之类的IDE,需要创建许多工程,会造成很多不便.有时,采用Vim或者Sublime text等编辑器编写简单的控制台程序能节省许多时间.但是,在编译时,就必使用命令行编译运行.这时,一个事先编写好的shell脚本能大大缩短调试时间. 把下面的代码复制并保存为xxx.sh文件,输入要编译的文件名(不包括后缀)和编译选项(可选),即可运行(Linux或者MacOS系统). 1 ##/bin/bash 2 echo "-----

java-初识输入输出重定向以及简单输入流输出

上代码了解一下: 1 package com.etc; 2 3 import java.io.BufferedInputStream; 4 import java.io.BufferedOutputStream; 5 import java.io.FileInputStream; 6 import java.io.FileNotFoundException; 7 import java.io.FileOutputStream; 8 import java.io.InputStream; 9 im

CentOS下输入输出重定向

nux重定向是指修改原来默认的一些东西,对原来系统命令的默认执行方式进行改变,比如说简单的我不想看到在显示器的输出而是希望输出到某一文件中就可以通过Linux重定向来进行这项工作. Linux默认输入是键盘,输出是显示器.你可以用重定向来改变这些设置.比如用wc命令的时候本来是要手动输入一篇文字来计算字符数的,用了重定向后可以直接把一个已经写好的文件用‘<’指向这条命令,就直接可以统计这个文件的字符数等了.输出也是一样,你可以把屏幕输出重定向到一个文件里,再到文件里去看结果.重定向操作符可以用来