`

freopen - C/C++文件输入输出利器

    博客分类:
  • c++
阅读更多
 

freopen以前经常使用,比较方便,可以当作模板,在中间替换为自己的代码即可使用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h> // 实际使用中发现freopen也包含在iostream.h中,C++代码#include <iostream.h>即可。
              
int main()
{
     freopen("sample.in""r", stdin);
     freopen("sample.out""w", stdout);
              
     /* 同控制台输入输出 */
              
     fclose(stdin);
     fclose(stdout);
 
     return 0;
}

-----转自:http://www.slyar.com/blog/c-freopen-stdin-stdout.html  -------------

当我们求解acm题目时,通常在设计好算法和程序后,要在调试环境(例如VC 等)中运行程序,输入测试数据,当能得到正确运行结果后,才将程序提交到oj中。但由于调试往往不能一次成功,每次运行时,都要重新输入一遍测试数据,对 于有大量输入数据的题目,输入数据需要花费大量时间。 

        使用freopen函数可以解决测试数据输入问题,避免重复输入,不失为一种简单而有效的解决方法。 

 函数名:freopen 
声明:FILE *freopen( const char *path, const char *mode, FILE *stream ); 
所在文件: stdio.h 
参数说明: 
path: 文件名,用于存储输入输出的自定义文件名。 
mode: 文件打开的模式。和fopen中的模式(如r-只读, w-写)相同。 
stream: 一个文件,通常使用标准流文件。 
返回值:成功,则返回一个path所指定文件的指针;失败,返回NULL。(一般可以不使用它的返回值) 
功能:实现重定向,把预定义的标准流文件定向到由path指定的文件中。标准流文件具体是指stdin、stdout和stderr。其中stdin是标准输入流,默认为键盘;stdout是标准输出流,默认为屏幕;stderr是标准错误流,一般把屏幕设为默认。 


        下面以在VC下调试“计算a+b”的程序举例。 
C语法: 
#include <stdio.h> 
int main() 

int a,b; 
freopen("debug\\in.txt","r",stdin); //输入重定向,输入数据将从in.txt文件中读取 
freopen("debug\\out.txt","w",stdout); //输出重定向,输出数据将保存在out.txt文件中 
while(scanf("%d %d",&a,&b)!=EOF) 
printf("%d\n",a+b); 
fclose(stdin);//关闭文件 
fclose(stdout);//关闭文件 
return 0; 


C++语法 
#include <stdio.h> 
#include <iostream.h> 
int main() 

int a,b; 
freopen("debug\\in.txt","r",stdin); //输入重定向,输入数据将从in.txt文件中读取 
freopen("debug\\out.txt","w",stdout); //输出重定向,输出数据将保存在out.txt文件中 
while(cin>>a>>b) 
cout<<a+b<<endl; // 注意使用endl 
fclose(stdin);//关闭文件 
fclose(stdout);//关闭文件 
return 0; 

        freopen("debug\\in.txt","r",stdin)的作用就是把标准输入流stdin重定向到debug\\in.txt文件中,这 样在用scanf或是用cin输入时便不会从标准输入流读取数据,而是从in.txt文件中获取输入。只要把输入数据事先粘贴到in.txt,调试时就方 便多了。 
类似的,freopen("debug\\out.txt","w",stdout)的作用就是把stdout重定向到debug\\out.txt文件中,这样输出结果需要打开out.txt文件查看。 

        需要说明的是: 
        1. 在freopen("debug\\in.txt","r",stdin)中,将输入文件in.txt放在文件夹debug中,文件夹debug是在VC 中建立工程文件时自动生成的调试文件夹。如果改成freopen("in.txt","r",stdin),则in.txt文件将放在所建立的工程文件夹 下。in.txt文件也可以放在其他的文件夹下,所在路径写正确即可。 
        2. 可以不使用输出重定向,仍然在控制台查看输出。 
        3. 程序调试成功后,提交到oj时不要忘记把与重定向有关的语句删除。

分享到:
评论

相关推荐

    Freopen?C/C++文件输入输出利器

    freopen以前经常使用,比较方便,可以当作模板,在中间替换为自己的代码即可使用。  #include &lt;stdio&gt; // 实际使用中...  /* 同控制台输入输出 */  fclose(stdin);  fclose(stdout);  return 0;  }  当

    c语言freopen文件流示例

    在C语言编程中,处理文件输入输出是一项常见的需求。本文将通过一个具体的示例程序来详细解释`freopen`函数的使用方法及其应用场景,帮助读者更好地理解如何利用C语言进行文件操作。 #### 1. `freopen`函数简介 `...

    用C/C++ 列出指定目录的所有文件夹和文件

    ### C/C++ 实现列出指定目录的所有文件夹和文件 #### 概述 本文将详细介绍如何使用 C/C++ 编程语言实现一个简单的程序来遍历指定目录,并列出该目录下的所有子目录与文件。本示例代码适用于 Windows 平台,并使用...

    C、C++函数集(速查).pdf

    正确理解和使用这些函数对于编写有效和高效的C/C++程序至关重要。这份速查表可以作为参考,帮助开发者快速回顾和学习各种库函数的用法。在日常开发中,开发者应该着重关注函数的参数类型、返回值以及可能发生的异常...

    C标准库源代码(学习C/C++必备)

    C标准库源代码\FREOPEN.C C标准库源代码\FSCANF.C C标准库源代码\FSEEK.C C 标准库源代码\FSEEKI64.C C标准库源代码\FSETPOS.C C标准库源代码\FSTAT.C C标准库源代码\FSTATI64.C C标准库源代码\FSTREAM C标准库源...

    CPP源程序批量设置输入输出.zip_C#实现_C++竞赛程序批量设置输入输出流_NOIP竞赛_QU6_freopen

    在C#中实现这个功能,可以创建一个简单的命令行应用程序,接收输入输出文件路径作为参数,然后调用C++的动态链接库(DLL)来执行`freopen()`操作。以下是C#实现的一个大致框架: ```csharp using System; using ...

    C++读写Excel文件

    **C++读写Excel文件——使用OpenXLSX库** 在C++编程中,处理Excel文件通常是数据分析、报告生成或数据存储的重要环节。OpenXLSX是一个轻量级且高效的开源库,它允许开发者在C++环境中方便地读取、写入、创建和修改....

    freopen函数说明

    在 C 语言中,freopen 函数是一个非常实用的函数,它可以重定向标准输入输出流,使得程序调试和测试变得更加方便。下面是对 freopen 函数的详细介绍和使用方法。 freopen 函数的声明和参数 -----------------------...

    MFC中使用控制台输入输出

    在Microsoft Foundation Classes (MFC)库中,虽然主要设计用于创建Windows GUI应用程序,但有时我们需要在MFC程序中实现控制台输入输出的功能。这在进行调试或者需要与用户交互的简单命令行操作时非常有用。本文将...

    C++中的文件操作

    这种方法更加面向对象,提供了更丰富的文件操作功能,但与C风格的输入输出不兼容。 **代码示例:** ```cpp #include using namespace std; int main() { ifstream fin("my.in"); // 定义输入文件流 ofstream ...

    C文件和结构体实用PPT课件.pptx

    通过上述示例,可以看出`fopen`和`freopen`都可以用于文件操作,但是`freopen`提供了更简便的重定向方法,尤其适用于需要频繁使用标准输入输出功能的情况。 总之,理解和掌握`freopen`和`fopen`函数的使用方法,...

    c/c++输出重定向的方法

    在C和C++编程中,输出重定向是一种高级技术,允许程序员将程序的输出从标准输出设备(通常是显示器)重定向到文件或其他流。这在需要记录程序运行日志、测试输出或者与其他程序进行交互时非常有用。以下是两种在C和...

    ACM入门. ACM入门.ppt

    ### ACM入门之C/C++输入输出详解 #### 一、基础知识概述 在ACM竞赛中,熟练掌握C/C++的输入输出技术对于参赛者来说至关重要。本篇文章将围绕以下几个方面展开详细讨论: 1. **标准输入输出的概念及其使用场景**。...

    c/c++函数库说明(api)html版

    所有的 C / C++ 函数 Constructors (cppstring) Constructors (cppvector) Operators (cppbitset) Operators (cppdeque) Operators (cppstack) Operators (cppstring) Operators (cppvector) abort (stdother...

    C++Builder文件,目录和驱动器

    这些类不仅支持文本文件,还支持二进制文件的处理,并且可以与其他输入输出设备(如键盘和显示器)结合使用。 ##### 流式文件类的基本操作 - **打开文件** - `open`: 打开或创建一个文件。 ```cpp std::fstream ...

    ACM练习题不错可以供初学者学习

    本篇主要针对ACM中的输入输出处理进行详细解析,尤其针对C/C++语言。 首先,了解C/C++的输入输出处理是至关重要的。在C语言中,标准输入(stdin)通常代表键盘,标准输出(stdout)则对应屏幕。在编写程序时,我们通常...

    C++Fstream文件流与freopen重定向操作教程

    fstream文件流是C++标准库中的一个类,用于文件输入/输出操作。包括ifstream和ofstream两个类,分别用于输入和输出操作。fstream文件流提供了多种打开模式,例如ios::in、ios::out、ios::app、ios::ate等,可以根据...

    2021-实验8-C语言实验报告1

    - 修改后的代码使用`freopen`函数实现了输入输出重定向,允许程序接收标准输入或从指定的文件读取内容,提高了代码的灵活性。 通过这些实验,学生可以深入理解C语言中文件操作的基本概念,包括文件的打开、读取、...

    如何使用freopen生成数据和测试1

    在编程和调试过程中,`freopen` 函数是一个非常实用的工具,特别是在处理输入输出时。这个函数允许我们将标准输入(stdin)和标准输出(stdout)重定向到指定的文件,而不是默认的键盘和屏幕。这在进行自动化测试、...

Global site tag (gtag.js) - Google Analytics