zoukankan      html  css  js  c++  java
  • 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)。

  • 相关阅读:
    【读书笔记】程序员的自我修养总结(三)
    【DSP开发】利用CCS5.4开发基于DSP6455的JPEG2000图像解压缩过程
    【DSP开发】利用CCS5.4开发基于DSP6455的JPEG2000图像解压缩过程
    【读书笔记】程序员的自我修养总结(二)
    【读书笔记】程序员的自我修养总结(二)
    【读书笔记】程序员的自我修养总结(一)
    【读书笔记】程序员的自我修养总结(一)
    CMake生成VS2010工程相对路径和绝对路径问题说明
    CMake生成VS2010工程相对路径和绝对路径问题说明
    关于lib和dll
  • 原文地址:https://www.cnblogs.com/Lemon1234/p/11654205.html
Copyright © 2011-2022 走看看