2017-11-09 5 views
-1

UniではLIFEをプログラムしなければならないので、メニューを作成する必要があります。メニューのユーザーの入力を読むには、改行/入力を処理/削除する読み込み関数を記述する必要があります。メニューを読むために改行を飛び越す機能

ここでcinをこの関数に置き換えると、最初のメニューオプションを入力した後に2回メニューが表示されます。メニューのオプションではないkkkのようなものを入力すると、メニューが4回印刷されます。私は助手の助手の一人に尋ねたが、彼は知らなかったし、機能が正しいように見え、おそらく彼が現在知らないものは非常に明白であると思われる。私たちのメニューコードに間違いがないとも言われています。おそらく何が間違っていたのか、それを私に説明できますか?どうもありがとう!

+6

彼がそれを初期設定したとしても、コードはほぼ完全に間違っていて、ランダムに書かれているようです。 OPに: "私は助手の一人に尋ねたが、彼は知らなかったし、機能が正しいように見えた" - 学習の別の座席に行く。 –

+0

はい、私はそれを知っていただきありがとうございます! – Positron

+3

コードは意味がありません。入力を取得する前に入力*をテストします。テストしなくても入力を取得した直後に関数を終了します。関数内の**すべてのステートメントが何をするのか理解しておく必要があります。もしあなたがしなければ、[本に行く](https://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)そして***それを見てください***。 – Galik

答えて

1

あなたは決してinputを初期化しないので、初めてループを読むときに未定義の動作があり、プログラム全体が無意味です。初期化されていない変数を読むことはUBです。単純で単純です。

コードにも他の問題があります(返されると宣言された関数から常に値を返すとは限りません)が、UBはすべて勝ちます。コードにUBがある限り、何も本当に問題ありません。

+0

ありがとう! UBの意味は? – Positron

+2

@Positronなぜあなたは理解していない答えを受け入れていますか? –

+0

@Positron UB == [未定義の動作](http://en.cppreference.com/w/cpp/language/ub)。 –

関連する問題