zoukankan      html  css  js  c++  java
  • [C++]用freopen重定向文件

      测试代码:

    1 FILE *f = fopen("1.txt", "w");
    2 printf("%x\n", f);
    3 fprintf(f, "%s", "0123");
    4 FILE *f2 = freopen("2.txt", "w", f);
    5 printf("%x\n", f);
    6 printf("%x\n", f2);
    7 fprintf(f, "%s", "0123");

      控制台输出:

    10310c30
    10310c30
    10310c30

      文件“1.txt”输出:

    0123

      文件“2.txt”输出: 

    0123

      即:对于fopen或其他方式得到的FILE*结构指针,freopen可以通过修改参数指针对应的结构的数据成员(真正的文件句柄)的方式,使该文件对象映射到新的文件,从而达到将特定值的文件指针重定向的效果。成功的时候返回参数文件指针。

      在一个地方重定向文件指针,其他使用该指针的代码操作的文件也会发生变化。该功能用于重定向标准输入输出很合适:

    1 freopen("CONIN$", "r+t", stdin); 
    2 freopen("CONOUT$", "w+t", stdout);

      一个应用,在Win32程序中使用控制台来帮助调试:

     1 #include <windows.h>
    2
    3 int WINAPI WinMain( __in HINSTANCE hInstance, __in_opt HINSTANCE hPrevInstance, __in_opt LPSTR lpCmdLine, __in int nShowCmd )
    4 {
    5 BOOL b = AllocConsole();
    6 freopen("CONOUT$", "w+t", stdout);
    7
    8 cout << "abcd" << endl;
    9
    10 FreeConsole();
    11
    12 return 0;
    13 }
  • 相关阅读:
    博客推荐
    oracle11g dataguard 安装手册(转)
    Linux文件系统介绍(转)
    降低磁盘IO使Oracle性能优化(转)
    关于AWR报告命中率指标的解释(转)
    oracle 锁的介绍 (转)
    oracle undo redo 解析
    oracle sqlplus 连接不正常
    Oracle技术嘉年华
    断线的回忆
  • 原文地址:https://www.cnblogs.com/cbscan/p/2111589.html
Copyright © 2011-2022 走看看