gpt4 book ai didi

c - freopen 标准输出和控制台

转载 作者:可可西里 更新时间:2023-11-01 13:15:38 26 4
gpt4 key购买 nike

给定以下函数:

freopen("file.txt","w",stdout);

将 stdout 重定向到一个文件中,如何使 stdout 重定向回控制台?

我会注意到,是的,还有其他类似的问题,但是它们是关于 linux/posix 的。我正在使用 Windows。

您不能分配给标准输出,这会使依赖它的一组解决方案无效。dup 和 dup2() 不是 Windows 原生的,使另一组无效。如前所述,posix 函数不适用(除非您计算 fdopen())。

最佳答案

您应该能够使用 _dup做这个

这样的事情应该可行(或者您可能更喜欢 _dup 文档中列出的示例):

#include <io.h>
#include <stdio.h>

...
{
int stdout_dupfd;
FILE *temp_out;

/* duplicate stdout */
stdout_dupfd = _dup(1);

temp_out = fopen("file.txt", "w");

/* replace stdout with our output fd */
_dup2(_fileno(temp_out), 1);
/* output something... */
printf("Woot!\n");
/* flush output so it goes to our file */
fflush(stdout);
fclose(temp_out);
/* Now restore stdout */
_dup2(stdout_dupfd, 1);
_close(stdout_dupfd);
}

关于c - freopen 标准输出和控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7664788/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com