【发布时间】:2016-05-12 22:44:51
【问题描述】:
对于puts (const char*),我读到“成功时返回非负值。出错时,函数返回 EOF 并设置错误指示符 (ferror)。”
我试图让函数出错,所以我可以cout EOF 返回,但我似乎做不到。如果我没有将 char* 初始化为任何值,或者将其设置为 NULL,它仍然返回一个非负的成功值。是什么实际上会使此功能失败?谢谢。
附带问题:如果您 cout << 一个应该返回 EOF 的函数,它实际上会打印 'EOF'、其他内容还是什么都不打印?这实际上是我最初尝试测试的。
【问题讨论】:
-
一个明显的可能性是尝试写入已满的磁盘(并且没有回写缓存)。
-
哦,我没想到。我可以更轻松地测试任何其他可能性吗?
-
你可以关闭
stdout。 -
@KerrekSB:不过那将是 UB。指向
FILE对象的指针的值在关闭后是不确定的。 -
@Jake:回答你的附带问题,如果你
cout << EOF << endl;它只会打印一个负数,例如-1。返回 EOF 的函数通常具有返回类型int,因此它只是为int调用<<重载。