2016-05-12 4 views
0

puts (const char*)の場合、「成功すると、負でない値が返されます。エラーの場合、関数はEOFを返し、エラーインジケータ(ferror)を設定します。puts()はいつ失敗しますか?

私はエラーに関数を取得しようとしているので、私はcout EOFリターンをすることができますが、私はそうすることはできません。私がchar*を何かに初期化しない、またはNULLに設定しても、それは非負の成功値を返します。実際にこの機能を失敗させるものは何ですか?ありがとう。

逆の質問:cout <<の場合、EOFを返すはずの関数は、実際には 'EOF'を印刷するのでしょうか、それとも何も表示しませんか?これは実際に私が最初にテストしようとしていたものです。

+1

明らかに1つの可能性があるのは、いっぱいになる(書き戻しキャッシュを持たない)ディスクに書き込む試みでしょう。 –

+0

ああ、私はそれを考えなかった。もっと簡単にテストできる他の可能性はありますか? – Austin

+0

'stdout'を閉じることができます。 –

答えて

3

あなたはそれをサポートするシステム(例えば、Linuxなど)、あなたはENOSPCで、/dev/fullへの入力にゼロバイトの無限のストリームを生成し、失敗したデバイスをあなたのプログラムの出力をリダイレクトすることができます(「いいえスペース左にしている場合on device ")を出力します。あなたがstderr(またはstd::cerr)またはファイルにエラー・メッセージを印刷する必要があります。もちろん、

./program>は/ dev /フル

関連する問題