- ベストアンサー
fgetsとループ処理
C言語の勉強をしております。 http://oshiete1.goo.ne.jp/qa4436782.html での質問に付随することなのですが、新しく立てさせていただきました。 キーボードからの入力で、何も入力されない場合にループから抜けたいんですが、以下のように記述すると、fgetsが飛ばされてしまいました。 char buffer[80]; int i; for(i = 0; i < 1000; i++){ memset(buffer, 0, sizeof(buffer)); printf("登録する名前を入力してください:"); fgets(buffer, sizeof(buffer)-1, stdin); /* 名前が未入力でEnterされた場合 */ if(buffer[0] == '\n'){ /* ループを抜ける */ break; } } sscanf(buffer, "%s", work_pt->names); 1回目のループで未入力とすると正常にループから抜けるんですが、 データを1度入力してから2回目の入力で未入力とすると、 「登録する名前を入力してください:」の表示後、ループから抜けてしまいます・・・。 どなたか原因と解決策の分かる方がおられたら教えていただけないでしょうか?
- みんなの回答 (3)
- 専門家の回答
お礼
ありがとうございます。 色々試行錯誤し、strlenで入力文字数が0かどうかを判断させるようにしてしまいました。 アドバイスありがとうございました。