• freopen()重定向


    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
    ");
        /* this output will go to a file */
        printf("This will go into a file.
    ");
        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
    ", 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
    ", a + b);
        //fclose(stdin);
        //fclose(stdout);
        freopen("CON", "r", stdin);
        freopen("CON", "w", stdout);
        printf("Hello World
    ");
        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
    ", a + b);
        //fclose(stdin);
        //fclose(stdout);
        freopen("CON", "r", stdin);
        freopen("CON", "w", stdout);
        printf("Hello World
    ");
        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)。

  • 相关阅读:
    mysql常用数据类型的选择
    mysql常用操作
    phpstorm运行在浏览器中执行php文件报502错误
    (转)PHP中的 抽象类(abstract class)和 接口(interface)
    mysql group by优化
    母函数问题【转】
    组合数学
    网易游戏2011招聘笔试题
    B树
    概率题
  • 原文地址:https://www.cnblogs.com/Lemon1234/p/11654205.html
Copyright © 2020-2023  润新知