掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
VC++のscanf()の文字入力で、入力済みの変数が変更されてしまう。 (ID:57491)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
あちこちの掲示板で何度も話題になるのでよくある誤解だと思いますが、 > いや、fflush必要ないですね。失礼。 必要ないというか、入力用のストリームに対する fflush は 言語的に「未定義」ですからそもそも「書いてはいけない処理」です。 VC の場合はたまたま、一見問題がないように見えますが、 規格上は「何がおきてもかまわない/保証しない」ので、 PCが壊れようが、ハードディスクが消去されようが、 (VC のように)一見正常に見えてしまおうがかまいませんし、 エラーになるとも限りません。 <JIS X3010> 7.9.5.2 fflush 関数 (抜粋) stream が出力ストリーム又は直前の操作が入力でない更新ストリームを 指すとき、fflush 関数は 〜 (中略) 〜 書き込む。 それ以外の時の動作は未定義とする。 </JIS X3010> ※全文は規格書を別途あたってください。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.