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)。
对于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)。