プロが教えるわが家の防犯対策術!

空エンターで制御したい処理があるのですが、
char in[128];
gets(in);

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

A 回答 (3件)

ランタイムライブラリの仕様を確認しましょう



VC++ですと getsで入力された文字列は最初の改行文字'\n'までがバッファに格納され '\n'を NULL文字の'\0'に変換する
となっているようです

判定の方法として

gets( buf );
if ( buf[0] == '\0' ) {
  // 空行の場合の処理
}
といった具合でしょう
    • good
    • 4
この回答へのお礼

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

ご回答ありがとうございました。

お礼日時:2008/07/06 01:45

>enterの入力は改行コードが入るわけではないのでしょうか?


gets() は改行コードを保存しないようですね。
むしろ fgets() を使ったほうがよいでしょう。
    • good
    • 1
この回答へのお礼

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

お礼日時:2008/07/06 01:40

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

この回答への補足

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

補足日時:2008/07/06 01:31
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング