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以前经常使用,比较方便,可以当作模板,在中间替换为自己的代码即可使用。 #include <stdio> // 实际使用中... /* 同控制台输入输出 */ fclose(stdin); fclose(stdout); return 0; } 当
在C语言编程中,处理文件输入输出是一项常见的需求。本文将通过一个具体的示例程序来详细解释`freopen`函数的使用方法及其应用场景,帮助读者更好地理解如何利用C语言进行文件操作。 #### 1. `freopen`函数简介 `...
### C/C++ 实现列出指定目录的所有文件夹和文件 #### 概述 本文将详细介绍如何使用 C/C++ 编程语言实现一个简单的程序来遍历指定目录,并列出该目录下的所有子目录与文件。本示例代码适用于 Windows 平台,并使用...
正确理解和使用这些函数对于编写有效和高效的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标准库源...
在C#中实现这个功能,可以创建一个简单的命令行应用程序,接收输入输出文件路径作为参数,然后调用C++的动态链接库(DLL)来执行`freopen()`操作。以下是C#实现的一个大致框架: ```csharp using System; using ...
**C++读写Excel文件——使用OpenXLSX库** 在C++编程中,处理Excel文件通常是数据分析、报告生成或数据存储的重要环节。OpenXLSX是一个轻量级且高效的开源库,它允许开发者在C++环境中方便地读取、写入、创建和修改....
在 C 语言中,freopen 函数是一个非常实用的函数,它可以重定向标准输入输出流,使得程序调试和测试变得更加方便。下面是对 freopen 函数的详细介绍和使用方法。 freopen 函数的声明和参数 -----------------------...
在Microsoft Foundation Classes (MFC)库中,虽然主要设计用于创建Windows GUI应用程序,但有时我们需要在MFC程序中实现控制台输入输出的功能。这在进行调试或者需要与用户交互的简单命令行操作时非常有用。本文将...
这种方法更加面向对象,提供了更丰富的文件操作功能,但与C风格的输入输出不兼容。 **代码示例:** ```cpp #include using namespace std; int main() { ifstream fin("my.in"); // 定义输入文件流 ofstream ...
通过上述示例,可以看出`fopen`和`freopen`都可以用于文件操作,但是`freopen`提供了更简便的重定向方法,尤其适用于需要频繁使用标准输入输出功能的情况。 总之,理解和掌握`freopen`和`fopen`函数的使用方法,...
在C和C++编程中,输出重定向是一种高级技术,允许程序员将程序的输出从标准输出设备(通常是显示器)重定向到文件或其他流。这在需要记录程序运行日志、测试输出或者与其他程序进行交互时非常有用。以下是两种在C和...
### ACM入门之C/C++输入输出详解 #### 一、基础知识概述 在ACM竞赛中,熟练掌握C/C++的输入输出技术对于参赛者来说至关重要。本篇文章将围绕以下几个方面展开详细讨论: 1. **标准输入输出的概念及其使用场景**。...
所有的 C / C++ 函数 Constructors (cppstring) Constructors (cppvector) Operators (cppbitset) Operators (cppdeque) Operators (cppstack) Operators (cppstring) Operators (cppvector) abort (stdother...
这些类不仅支持文本文件,还支持二进制文件的处理,并且可以与其他输入输出设备(如键盘和显示器)结合使用。 ##### 流式文件类的基本操作 - **打开文件** - `open`: 打开或创建一个文件。 ```cpp std::fstream ...
本篇主要针对ACM中的输入输出处理进行详细解析,尤其针对C/C++语言。 首先,了解C/C++的输入输出处理是至关重要的。在C语言中,标准输入(stdin)通常代表键盘,标准输出(stdout)则对应屏幕。在编写程序时,我们通常...
fstream文件流是C++标准库中的一个类,用于文件输入/输出操作。包括ifstream和ofstream两个类,分别用于输入和输出操作。fstream文件流提供了多种打开模式,例如ios::in、ios::out、ios::app、ios::ate等,可以根据...
- 修改后的代码使用`freopen`函数实现了输入输出重定向,允许程序接收标准输入或从指定的文件读取内容,提高了代码的灵活性。 通过这些实验,学生可以深入理解C语言中文件操作的基本概念,包括文件的打开、读取、...
在编程和调试过程中,`freopen` 函数是一个非常实用的工具,特别是在处理输入输出时。这个函数允许我们将标准输入(stdin)和标准输出(stdout)重定向到指定的文件,而不是默认的键盘和屏幕。这在进行自动化测试、...