• ベストアンサー

入力制御

c言語初心者です。 以下のプログラムをみてください。 #include<stdio.h> int main() { char ch[3]; fgets( ch, 3,stdin );   if(ch[0]=='3') { printf("Hello!\n"); } else if(ch[0]=='2') { puts("回る"); } else{ puts("間違いf"); } return 0; } このプログラムでは2を入力すると"回る"と表示されますが 2wでも同じように表示されてしまいます。 制限して2wで入力したら"間違い"と表示させたいのですがなかなかうまくいきません。 どなたか教えてください。

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

  • ベストアンサー
  • reset_cat
  • ベストアンサー率68% (94/138)
回答No.3

#1さんの言うように、strcmpを使うのが手っ取り早いと思います。 if(ch[0]=='3') > if(strcmp(ch, "3") == 0) else if(ch[0]=='2') > else if(strcmp(ch, "2") == 0) とかでしょうか?

armpoint
質問者

お礼

ありがとうございます。 なんとかやってみます。

その他の回答 (2)

  • kent_a
  • ベストアンサー率18% (36/199)
回答No.2

2wと入力した場合、ch[0]='2',ch[1]='w'が入っています。 なので else if(ch[0]=='2') だと2wと入力しても'2'と判断するのですね たとえばですが ch[1]も判断するとか chのレングス(文字列長)を判断するとかですか?

armpoint
質問者

お礼

そうですね、そういった事もできるのですね。 大変参考になりました。ありがとうございました。

  • hidebun
  • ベストアンサー率50% (92/181)
回答No.1

そりゃ1番最初の文字しか比較対象にしてないからそうなるわー。 文字列比較関数、strcmpを使ってみたら?

armpoint
質問者

お礼

なんとかやってみます。 ありがとうございました。

関連するQ&A