• ベストアンサー

C++で空Enterの入力を判断したい!!

空エンターで制御したい処理があるのですが、 char in[128]; gets(in); if(in[0]=='n') ↑の判定だとif文に中に入ってくれません。 入力なしでもOKな様にgetsを使ってみました。 (ちなみにこのinには値が入ることもあります。) enterの入力は改行コードが入るわけではないのでしょうか? その場合どのように判定すればいいのか教えてください! お願いします!!

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.3

ランタイムライブラリの仕様を確認しましょう VC++ですと getsで入力された文字列は最初の改行文字'\n'までがバッファに格納され '\n'を NULL文字の'\0'に変換する となっているようです 判定の方法として gets( buf ); if ( buf[0] == '\0' ) {   // 空行の場合の処理 } といった具合でしょう

akki-ya
質問者

お礼

教えていただいたようにnull文字で判定したら空行の処理を行ってくれました。 '\n'は'\0'に変換されてしまうとは知りませんでした。 とても勉強になりました。これからは仕様もよく確認してみます。 ご回答ありがとうございました。

その他の回答 (2)

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.2

>enterの入力は改行コードが入るわけではないのでしょうか? gets() は改行コードを保存しないようですね。 むしろ fgets() を使ったほうがよいでしょう。

akki-ya
質問者

お礼

改行コードは保存してくれないんですね・・。 ご回答ありがとうございました。

回答No.1

 if(in[0]=='\n')

akki-ya
質問者

補足

ご回答ありがとうございます。 すみません・・入力間違いで・・\nでやってます・・。

関連するQ&A