puts() 什么时候会失败?

When will puts() fail?

对于puts (const char*),我读到了,"On success, a non-negative value is returned. On error, the function returns EOF and sets the error indicator (ferror)."

我试图让函数出错,所以我可以 cout EOF return,但我似乎做不到。如果我不将 char* 初始化为任何值,或将其设置为 NULL,它仍然 return 是一个非负成功值。什么东西实际上会使这个功能失败?谢谢

附带问题:如果您 cout << 一个应该 return EOF 的函数,它实际上会打印 'EOF' 其他内容,还是什么都不打印?这实际上是我首先要测试的。

如果您使用的系统支持它(例如,Linux),您可以将程序的输出重定向到 /dev/full,这是一种在输入时产生无限零字节流的设备并在输出上失败并显示 ENOSPC(“设备上没有留下 space”)。

./program > /dev/full

当然,您必须将任何错误消息打印到 stderr(或 std::cerr)或文件。

不幸的是,这不起作用。 Linux 管道,“stderror”除外。使用上面的示例,“puts”不会给出错误消息 (-1)。