2016-05-12 74 views
0

對於puts (const char*),我讀到:「成功時返回一個非負值,錯誤時函數返回EOF並設置錯誤指示符(ferror)。」什麼時候會put()失敗?

我試圖讓錯誤的功能,所以我可以cout EOF返回,但我似乎無法。如果我不將char*初始化爲任何值,或者將其設置爲NULL,它仍會返回一個非負值的成功值。什麼東西會讓這個功能失效?謝謝。

旁邊的問題:如果你cout <<一個應該返回EOF的函數,它會實際打印'EOF',還是別的什麼東西?這實際上是我首先想要測試的。

+1

一個明顯的可能性是嘗試寫入已滿的磁盤(並且沒有寫回緩存)。 –

+0

哦,我沒有想到這一點。任何其他可能性,我可以更容易地測試? – Austin

+0

你可以關閉'stdout'。 –

回答

3

如果你在一個支持它的系統上(例如Linux),你可以將你的程序輸出重定向到/dev/full,這是一個在輸入時產生無限長零字節流的設備,並且以ENOSPC(「沒有剩餘空間在設備上「)輸出。

./program>的/ dev /全

當然你要打印任何錯誤消息stderr(或std::cerr)或文件。