• ベストアンサー

ブランクのチェック

C言語で、入力されたブランク(空白ではない)をチェックするようなプログラミングするにはどうしたらよいでしょうか。 char n [64]; scanf( %s , n ); if(n==""){ printf("エラー:入力してください\n"); } だと空白(NULL)の扱いになってしまいますか? ブランクに対してはどうプログラムを組めばいいでしょうか。

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

  • ベストアンサー
回答No.1

「長さ0の文字列か否か」を判定したいなら: /* #include <string.h> しとくべし */ if ( strlen(n) == 0 ) { printf("もっぺん入れろやゴルァ\n"); }

waseuni
質問者

お礼

文字列の長さに着目すればよかったんですね。 ありがとうございました。解決です。

その他の回答 (2)

  • koi1234
  • ベストアンサー率53% (1866/3459)
回答No.3

>if(n==" "){ >と直せばよいですか? そういうことではなくて 文字列の比較は単純な比較演算子 == とか != とかではできないんです コンパイルエラーにはなりませんが希望する動きにはなりません strcmpなどの文字列比較関数を使ってif判定してください

waseuni
質問者

お礼

そうでしたね。文字列の比較はstrcmpでした。基本的なところを間違えていました。 今回はstrlenを使ってみようと思います。 ありがとうございます。

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

scanfのマニュアルの「変換書式」とか書いてある箇所をよく読んでください。 %s は「(直前にある空白文字を読み飛ばした上で)空白で無い文字列」を入力します。 行単位での処理なら、fgets等で行単位に入力し、その文字列を解析する形になるでしょう。 ところで。 > if(n==""){ Cではあなたの期待通りに動きません。 ですが、文法間違いでもありません。

waseuni
質問者

補足

if(n==" "){ と直せばよいですか? アドバイスありがとうございます。

関連するQ&A