dポイントプレゼントキャンペーン実施中!

C言語で、入力されたブランク(空白ではない)をチェックするようなプログラミングするにはどうしたらよいでしょうか。

char n [64];

scanf( %s , n );

if(n==""){

printf("エラー:入力してください\n");

}
だと空白(NULL)の扱いになってしまいますか?
ブランクに対してはどうプログラムを組めばいいでしょうか。

A 回答 (3件)

「長さ0の文字列か否か」を判定したいなら:



/* #include <string.h> しとくべし */

if ( strlen(n) == 0 ) {
printf("もっぺん入れろやゴルァ\n");
}
    • good
    • 3
この回答へのお礼

文字列の長さに着目すればよかったんですね。

ありがとうございました。解決です。

お礼日時:2013/07/27 22:17

>if(n==" "){


>と直せばよいですか?

そういうことではなくて
文字列の比較は単純な比較演算子 == とか != とかではできないんです
コンパイルエラーにはなりませんが希望する動きにはなりません

strcmpなどの文字列比較関数を使ってif判定してください
    • good
    • 0
この回答へのお礼

そうでしたね。文字列の比較はstrcmpでした。基本的なところを間違えていました。

今回はstrlenを使ってみようと思います。

ありがとうございます。

お礼日時:2013/07/28 00:01

scanfのマニュアルの「変換書式」とか書いてある箇所をよく読んでください。


%s は「(直前にある空白文字を読み飛ばした上で)空白で無い文字列」を入力します。

行単位での処理なら、fgets等で行単位に入力し、その文字列を解析する形になるでしょう。


ところで。
> if(n==""){
Cではあなたの期待通りに動きません。
ですが、文法間違いでもありません。

この回答への補足

if(n==" "){

と直せばよいですか?

アドバイスありがとうございます。

補足日時:2013/07/27 22:14
    • good
    • 0

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