- ベストアンサー
ブランクのチェック
C言語で、入力されたブランク(空白ではない)をチェックするようなプログラミングするにはどうしたらよいでしょうか。 char n [64]; scanf( %s , n ); if(n==""){ printf("エラー:入力してください\n"); } だと空白(NULL)の扱いになってしまいますか? ブランクに対してはどうプログラムを組めばいいでしょうか。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
「長さ0の文字列か否か」を判定したいなら: /* #include <string.h> しとくべし */ if ( strlen(n) == 0 ) { printf("もっぺん入れろやゴルァ\n"); }
その他の回答 (2)
- koi1234
- ベストアンサー率53% (1866/3459)
>if(n==" "){ >と直せばよいですか? そういうことではなくて 文字列の比較は単純な比較演算子 == とか != とかではできないんです コンパイルエラーにはなりませんが希望する動きにはなりません strcmpなどの文字列比較関数を使ってif判定してください
お礼
そうでしたね。文字列の比較はstrcmpでした。基本的なところを間違えていました。 今回はstrlenを使ってみようと思います。 ありがとうございます。
- kmee
- ベストアンサー率55% (1857/3366)
scanfのマニュアルの「変換書式」とか書いてある箇所をよく読んでください。 %s は「(直前にある空白文字を読み飛ばした上で)空白で無い文字列」を入力します。 行単位での処理なら、fgets等で行単位に入力し、その文字列を解析する形になるでしょう。 ところで。 > if(n==""){ Cではあなたの期待通りに動きません。 ですが、文法間違いでもありません。
補足
if(n==" "){ と直せばよいですか? アドバイスありがとうございます。
お礼
文字列の長さに着目すればよかったんですね。 ありがとうございました。解決です。