是否有指向空的文件指针(FILE*)?

Ami*_*yan 2 c++ file-pointer

出于某些原因,我需要一个指向任何内容的文件指针(FILE*).这意味着我可以将它传递给fprintf函数并且fprintf忽略文件指针.

例如:

void my_function()
{
  FILE* nothing = NULL; // NULL is not correct.
  int n = fprintf(nothing, "PI = %f", 3.14); // Note: When nothing = NULL, error ocured.
}
Run Code Online (Sandbox Code Playgroud)

是否有指向空的文件指针(FILE*)?

Ste*_*sop 7

要解决您的实际问题(在注释中说明),请使用snprintf而不是printf,只要它在您的C++实现中可用(在C++ 03中无法保证).传入缓冲区的空指针,大小为0.没有写入任何内容,但返回值是格式化字符串的长度(不包括nul终止符).

[编辑:哎呀,我忘了snprintf在Windows上不符合C99.如果发生截断,则返回错误,而不是所需的长度.我不知道他们将如何处理C++ 0x需要符合C99的事实snprintf.

要回答您的问题,您可以/dev/null在类UNIX系统或nulWindows上进行操作.写入结果FILE*无效.但是,没有便携式零设备.


lit*_*adv 6

没有.

您的代码将导致运行时异常./dev/null例如,如果您在支持它的操作系统上运行,则可以使用,但是没有像C++中内置的那样.