前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >文件重定向函数freopen

文件重定向函数freopen

作者头像
用户1215536
发布2018-02-05 16:10:46
1.1K0
发布2018-02-05 16:10:46
举报
文章被收录于专栏:软件开发 -- 分享 互助 成长

头文件:stdio.h

FILE *freopen( const char *filename, const char *mode, FILE *stream );

参数说明:

filename:需要重定向到的文件名或文件路径。

mode:代表文件访问权限的字符串。例如,"r"表示“只读访问”、"w"表示“只写访问”、"a"表示“追加写入”。

stream:需要被重定向的文件流。

返回值:如果成功,则返回该指向该输出流的文件指针,否则返回为NULL。

下面举一个例子:假设E盘下面有两个文本文档in.txt和out.txt,其中in.txt中第一行是一个数字n,表示接下有n行字符串,out.txt是一个空文档,现在想要将in.txt中的内容全部复制到out.txt中,当然可以通过fopen,getc,putc等函数实现,但这里使用文件重定向,将in.txt重定向为stdin,将out.txt重定向为stdout,这样stdin和stdout中的函数本来应该是从屏幕上读取和输出数据的,就变成了从in.txt中读取数据,写入到out.txt中了。

程序如下:

代码语言:javascript
复制
#include<iostream>
#include<stdio.h>
using namespace std;
int main()
{
    const char * in ="E:\\in.txt";
    const char * out="E:\\out.txt";
    if(freopen(in,"r",stdin)==NULL)
    {
        cout<<"in.txt 打开失败"<<endl;
        return 0;
    }
    if(freopen(out,"w",stdout)==NULL)
    {
        cout<<"out.txt 打开失败"<<endl;
        return 0;
    }
    int n;
    cin>>n;
    cin.get();
    cout<<n;
    char str[50];
    while(n)
    {
        cin.getline(str,8);
        cout<<str<<endl;
        n--;
    }
    return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-01-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档