freopen是被包含于C标准库头文件stdio.h中的一个函数,用于重定向输入输出流。该函数可以在不改变代码原貌的情况下改变输入输出环境,但使用时应当保证流是可靠的。
freopen函数说明函数名:freopen
函数,以指定模式重新指定到另一个文件。模式用于指定新文件的访问方式。
头文件:stdio.h
C89函数声明:
*FILE freopen( const char filename, const char mode, FILE stream );
C99函数声明:
FILE freopen(const char * restrict filename, const char * restrict mode, FILE * restrict stream);
形参说明:
filename:需要重定向到的文件名或文件路径。
mode:代表文件访问权限的字符串。例如,"r"表示“只读访问”、"w"表示“只写访问”、"a"表示“追加写入”。
stream:需要被重定向的文件流。
返回值:如果成功,则返回该指向该输出流的文件指针,否则返回为NULL。
附加说明:
stdout(Standardoutput)标准输出
stdin(Standardinput)标准输入
stderr(Standarderror)标准错误
这个例子实现了从stdout到一个文本文件的重定向。即,把输出到屏幕的文本输出到一个文本文件中。
#include "stdafx.h"#include<stdio.h>int _tmain(int argc, _TCHAR* argv[]){if(freopen("D:\output.txt","w",stdout)==NULL)fprintf(stderr,"error redirecting stdoutn");for(int i=0;i<10;i++)printf("%3d",i);printf("n");fclose(stdout);return 0;}运行结果:
十个数输出到了D盘根目录下文本文件output.txt中。
从文件in.txt中读入数据,计算加和输出到out.txt中
#include "stdafx.h"#include<stdio.h>int _tmain(int argc, _TCHAR* argv[]){int a,b;freopen("D:\in.txt","r",stdin);freopen("D:\output2.txt","w",stdout);while(scanf("%d%d",&a,&b)!=EOF)printf("%dn",a+b);fclose(stdin);fclose(stdout);return 0;}运行结果:
计算的和输出到了D盘根目录下文本文件output2.txt中。