みけCATのにっき(仮)
つれづれなるまゝに、日くらし、PCにむかひて、心に移りゆくよしなし事を、そこはかとなく書きつくれば、あやしうこそものぐるほしけれ。
(本当か!?)
出典

うそはうそであると見抜ける人でないとインターネットを使うのは難しい

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

うそはうそであると見抜ける人でないとインターネットを使うのは難しい

投稿記事 by みけCAT » 8年前

C言語で適当に文字列を出力したい時によく使うと思われるputs関数。
これの戻り値はどうなるでしょうか?
調べてみましょう。

まずは『苦しんで覚えるC言語』の標準ライブラリ関数一覧 (WebArchive)を見てみましょう。
[ puts ]
関数型 : int puts(const char *s);
引数  : 文字列
戻り値 : 成功した場合は0、失敗したときは0以外。
機能  : 標準出力(ディスプレイ)に1行書き込む。改行されます。
次にC言語関数辞典 - puts (WebArchive)を見てみましょう。
戻り値

書き込み成功時: 正の値
書き込み失敗時: EOF
あれあれ?成功時の値が0か正かで完全に対立していますね。はたしてどっちが正しいのでしょうか?

N1256 (WebArchive)を見てみましょう。7.19.7.10 The puts functionに書かれています。
Returns
3 The puts function returns EOF if a write error occurs; otherwise it returns a nonnegative
value.
なんと、成功時は非負の値、失敗時はEOFを返すと書かれています。どちらも間違いでした。


YuO
記事: 947
登録日時: 13年前

Re: うそはうそであると見抜ける人でないとインターネットを使うのは難しい

投稿記事 by YuO » 8年前

ここで実はISO/IEC 9899では……とかあればネタとしてカンペキだったのでしょうけれど,ISO/IEC 9899:2011とN1256の内容で該当箇所に差異はないです。残念。
オフトピック
ANSI WebStoreでのINCTIS/ISO/IEC 9899や14882の価格が$60にもなっているので,昔みたいに「とりあえず買え」とは言えないのが辛いところ。
9899が$18の時代は「そこらの入門書より安くて正しい」とか言っていたのですが……。