文件*无处可去

时间:2009-12-13 01:13:26

标签: c++ c file-io bitbucket

有没有办法获得一个无点的C流对象(FILE*对象)?

我知道fopen("/dev/null","w");可行,但我想知道是否有更好的方法。

优选地,该位以比posix层更高的级别存储数据,并且也更便携。

2 个答案:

答案 0 :(得分:10)

否:Unix上的/dev/null和Windows上的NUL:(没有Cygwin或同等版本)是最好的方法。

提到fopen("/dev/null","o");的问题的原始版本,但此后已修复。
哦,"o"的{​​{1}}标志是不可移植的。可移植表单包含各种组合中的标记字符fopen()rwab

答案 1 :(得分:6)

  

我有一些登录到stderr,我希望能够用旗帜将其关闭。我真的不需要做更多的事情而不是改变传递给fprintf的变量

a)包装功能

logging = TRUE;
void debugprint(...)
{
    if (logging)   
    {
        fprintf(stderr, ...);
    }
}

b)我认为如果给它一个空指针,fprintf将返回。不记得了 - 试一试。然后你所要做的就是改变指针:)