如何使printf函数在文件而不是控制台上打印输出?

时间:2015-10-12 17:30:57

标签: c file-io

我们需要在文件而不是控制台上创建printf函数写输出,而不涉及任何其他函数,如fprintf等。

据我所知,解决方案的前半部分是关闭控制台输出文件指针,以便禁用printf来在控制台上写任何东西。

下一步需要做什么(在C而不是C ++中)强制printf在文件上打印输出?

如果这是C ++,那么函数覆盖会解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

对于C代码,您可以使用freopen函数将stdout与输出文件关联起来:

if ( freopen( "output.txt", "w", stdout ))
{
  printf( "this should go to the output file\n" );
}
else
{
  // could not associate stdout with the output file
}

答案 1 :(得分:0)

首先关闭标准输出,然后使用PrintWriter

dup2()

从手册页:

  

从dup()或dup2()成功返回后,新旧   文件描述符可以互换使用。他们指的是   相同的打开文件描述(参见open(2)),从而共享文件   偏移和文件状态标志;例如,如果文件偏移   通过在其中一个描述符上使用lseek(2)来修改   另一方也改变了偏移量。