c - freopen 用于在定向到文件后将输出重定向回标准输出

标签 c

我正在使用我的共享库将 freopen 用于 GUI 应用程序,这样我就可以将调试消息从 stdout 重定向到一个文件

我一直在使用基于 C++ 引用站点片段的代码:

/* freopen example: redirecting stdout */
#include <stdio.h>

int main ()
{
  freopen ("myfile.txt","w",stdout);
  printf ("This sentence is redirected to a file.");
  fclose (stdout);
  return 0;
}

这会将 stdout 重定向到 myfile.txt 并最终关闭 stdout

有没有一种方法可以重定向到一个文件,然后有效地删除重定向,这样 stdout 然后像往常一样打印到屏幕而不是用 fclose 关闭它?

最佳答案

不,不是在纯 C 中。如果您可以假设一个特定的系统(例如 POSIX),则可能有选择。

但坦率地说,freopen 是 IMO 的 hack,只需要与预先编写的代码兼容。如果您正在编写新代码,您应该将 FILE * 传递给相关函数并使用 fprintf 而不是 printf

关于c - freopen 用于在定向到文件后将输出重定向回标准输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11228263/

相关文章:

c - 使用多个文件指针试图在 C 中一次打开选择的文件..?

c - 将 argc 和 argv 传递给 c 中的线程

将字符串转换为其十进制值,然后再转换回其字符值

在 Visual Studio 中编译与在命令行中使用 cl 编译

将此 Shell 命令转换为能够在 C 语言上使用

c - 在 main、C 中使用后面函数中的变量

清除Libcurl中的cookie文件

使用嵌入式 FPGA 中的 MAC 地址与套接字进行通信

c++ - 同步屏幕 I/O & pthread & C++

c - 如何避免在使用此配置的每个函数中传递配置变量