文件*无处可去

BCS*_*BCS 5 c c++ file-io bitbucket

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

我知道fopen("/dev/null","w");会工作,但我想知道是否有更好的方法.

优选地,该位以比posix层更高的级别对数​​据进行分组,并且也更便携.

Jon*_*ler 10

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

(提到的问题的原始版本,fopen("/dev/null","o");但后来已被修复.)
哦,并且"o"标志fopen()是不可移植的.便携式形式包括标志字符r,w,a,b,+在各种组合.

  • 为什么``` - 在Windows上,null设备被称为`NUL`(参见例如http://msdn.microsoft.com/en-us/library/aa365247%28VS.85%29.aspx#naming_conventions以获得完整的保留文件名列表) (2认同)

Pod*_*Pod 6

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

a)包装功能

logging = TRUE;
void debugprint(...)
{
    if (logging)   
    {
        fprintf(stderr, ...);
    }
}
Run Code Online (Sandbox Code Playgroud)

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