我们需要在文件而不是控制台上创建printf
函数写输出,而不涉及任何其他函数,如fprintf
等。
据我所知,解决方案的前半部分是关闭控制台输出文件指针,以便禁用printf
来在控制台上写任何东西。
下一步需要做什么(在C而不是C ++中)强制printf
在文件上打印输出?
如果这是C ++,那么函数覆盖会解决这个问题吗?
答案 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)来修改 另一方也改变了偏移量。