您的位置:首页 > 编程语言 > C语言/C++

C语言文件输入/输出 ACM改进版(用freopen函数方便检验)

2013-08-02 19:40 459 查看
这次用到的文件打开函数不再是fopen,而是stdio.h中包含的另一个函数freopen
 
FILE * freopen ( const char * filename,const char * mode, FILE * stream );

【参数说明】
 
filename: 要打开的文件名
 
mode: 文件打开的模式,和fopen中的模式(r/w)相同
 
stream: 文件指针,通常使用标准流文件(stdin/stdout/stderr)
 
【使用方法】
 
因为文件指针使用的是标准流文件,因此我们可以不定义文件指针。
 
接下来我们使用freopen()函数以只读方式r(read)打开输入文件input.txt
 
freopen("D:\\input.txt","r", stdin);

然后使用freopen()函数以写入方式w(write)打开输出文件output.txt
 
freopen("D:\\output.txt","w", stdout);

接下来的事情就是使用freopen()函数的优点了,我们不再需要修改scanf和printf,而是维持代码的原样就可以了。
因为freopen()函数重定向了标准流,使其指向前面指定的文件,省时省力啊,赞...
 
最后只要使用fclose关闭输入文件和输出文件即可。
 
fclose(stdin);

fclose(stdout);

若要恢复句柄,可以重新打开标准控制台设备文件,只是这个设备文件的名字是与操作系统相关的。
 
DOS/Win:

 
freopen("CON", "r",stdin);

Linux:

 
freopen("/dev/console","r", stdin);

也附加一个代码模版:
 #include <stdio.h>

int main()
{
freopen("D:\\input.txt","r", stdin); /*把输入样例放进D:\input.txt*/
// freopen("D:\\output.txt","w", stdout); //此句可以不要直接看控制台输出

/*中间按原样写代码,什么都不用修改,cin、scanf 都不用修改,直接自动读取 */

fclose(stdin);
// fclose(stdout);
return0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: