ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

freopen()重定向

2019-10-11 15:04:05  阅读:270  来源: 互联网

标签:重定向 stdout int stdin freopen printf txt


freopen函数:

        使用不同的文件或模式重新打开流,即重定向

 

C++

 

   //把一个字符串写入到文件中去:
#include<iostream>
using namespace std;

int main(void)
{
    /* redirect standard output to a file */
    if(freopen("D:\\out.txt", "w", stdout) == NULL)
        fprintf(stderr,"error redirecting stdout\n");
    /* this output will go to a file */
    printf("This will go into a file.\n");
    string s = "12345";
    cout<<s<<endl; 
    int a,b;
    while(cin>>a>>b){
        cout<<a<<b<<endl; 
    }
    /*close the standard output stream*/
    fclose(stdout);
    return 0;
}
View Code

 

#include <iostream>
using namespace std;

int main(void)
{
    FILE *fp;
    fp = freopen("D:\\in.txt","r",stdin);   //freopen() 的返回值,如果与文件连接建立失败,返回NULL
    
    if(fp!=NULL){            //与文件连接建立成功
        int c;
        cin>>c;             //从文件中读入数据
        cout<<c<<endl;      //在屏幕上显示数据
    }else{
        cout<<"Open Error"<<endl;
    }
    
    //输出到控制台“CON”
    fp = freopen("CON","r",stdin);
    int a, b;
    cin>>a>>b;
    cout<<a<<b<<endl<<endl;  
    return 0;
}
View Code
#include<iostream>
using namespace std;

int main()
{
    
    freopen("D:\\in.txt", "r", stdin);
    freopen("D:\\out.txt", "w", stdout);
    
    int a, b;
    while (cin >> a >> b)
        cout << a + b << endl;
    fclose(stdin);
    
    fclose(stdout);

    return 0;
}
View Code
#include<iostream>
using namespace std;

int main()
{
    int a, b;
    freopen("D:\\in.txt", "r", stdin);
    freopen("D:\\out.txt", "w", stdout);
    while (scanf("%d%d", &a, &b) == 2)
        printf("%d\n", a + b);
    fclose(stdin);
    fclose(stdout);

    return 0;
}
View Code
#include<iostream>
using namespace std;

int main()
{
    int a, b;
    freopen("D:\\in.txt", "r", stdin);
    freopen("D:\\out.txt", "w", stdout);
    while (scanf("%d%d", &a, &b) == 2)
        printf("%d\n", a + b);
    //fclose(stdin);
    //fclose(stdout);
    freopen("CON", "r", stdin);
    freopen("CON", "w", stdout);
    printf("Hello World\n");
    scanf("%d%d", &a,&b);

    return 0;
}
View Code
#include<iostream>
using namespace std;

int main()
{
    int a, b;
    freopen("D:\\in.txt", "r", stdin);
    freopen("D:\\out.txt", "w", stdout);
    while (scanf("%d%d", &a, &b) == 2)
        printf("%d\n", a + b);
    //fclose(stdin);
    //fclose(stdout);
    freopen("CON", "r", stdin);
    freopen("CON", "w", stdout);
    printf("Hello World\n");
    scanf("%d%d", &a,&b);

    return 0;
}
View Code

 

需要注意,这里其实没有真正关闭,只是再次重定向,回到控制台。

在windows/DOS,读文件后用freopen("CON", "r", stdin),写文件后  freopen("CON", "w", stdout)。

在linux中,控制台设备是 /dev/console:freopen("/dev/console", "r", stdin)。

 

标签:重定向,stdout,int,stdin,freopen,printf,txt
来源: https://www.cnblogs.com/Lemon1234/p/11654205.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有