重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

do whileの文で
do{…
}while(c!=1 && c!=2 && c!=3);
つまり1,2,3以外の数字を入力した場合はループするようにしました。…は無限ループしないようにしています。実際1,2,3以外の数字を入力しても無限ループしません。しかし、数字以外の文字を入れてしまうと、無限ループします。%dがいけないのでしょうか?初心者ですので分かりやすくよろしくお願いします。多分これだけじゃ情報不足だと思うので、足りない情報があれば言ってください。すぐに書き込みます。

A 回答 (12件中11~12件)

do-while 中に scanf("%d",&c) があるのかしら?


その場合、数字以外の文字を入力すると、その文字を'読まなかった'ことにしてscanfから抜けてきます。
なのでループを回り、読まなかった文字を再度scanfするのでいつまでも回り続けます。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。多分その症状です。scanf("%d",&c) があります。どうやれば阻止できますか?

お礼日時:2005/05/31 11:09

ご提示の部分には問題ありませんので、


ループの中身が問題かと思います。

ループの中身を部分的に/* */で囲うことで
コメントアウト(実行しないように)して、
正しく動作しない原因がどこにあるかを探るようにして下さい。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。地道に調べてみます^^

お礼日時:2005/05/31 11:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!