掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
VC++のscanf()の文字入力で、入力済みの変数が変更されてしまう。 (ID:57485)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
>上のプログラムをVC++でコンパイルして実行すると、文字入力することで、iの値だけが、必ず 0 にリセットされてしまいます。 >同じソースをボーランドでコンパイルすると、このようなことは起こりませんでした。 バッファオーバーフローが起きています。 >scanfで入力された段階でメモリーにそれぞれの変数が値を持って確定されているでしょうし、新たにstdinで文字を入力することで、これらの変数が影響を受けてしまうのが腑に落ちません。 問題なのはこの部分 > char ch; >(snip) > scanf("%1s",&ch); s 指定子は規格によると >文字列の終わりを示すナル文字を自動的に付加する。 のでサイズを1と指定しても実際には2バイト書き込まれます。 ch は1バイトしかありませんから,たまたま隣にあったiにまで 影響が及んだのでしょう。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.