- ベストアンサー
入力制御
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で入力したら"間違い"と表示させたいのですがなかなかうまくいきません。 どなたか教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#1さんの言うように、strcmpを使うのが手っ取り早いと思います。 if(ch[0]=='3') > if(strcmp(ch, "3") == 0) else if(ch[0]=='2') > else if(strcmp(ch, "2") == 0) とかでしょうか?
その他の回答 (2)
- kent_a
- ベストアンサー率18% (36/199)
2wと入力した場合、ch[0]='2',ch[1]='w'が入っています。 なので else if(ch[0]=='2') だと2wと入力しても'2'と判断するのですね たとえばですが ch[1]も判断するとか chのレングス(文字列長)を判断するとかですか?
お礼
そうですね、そういった事もできるのですね。 大変参考になりました。ありがとうございました。
- hidebun
- ベストアンサー率50% (92/181)
そりゃ1番最初の文字しか比較対象にしてないからそうなるわー。 文字列比較関数、strcmpを使ってみたら?
お礼
なんとかやってみます。 ありがとうございました。
お礼
ありがとうございます。 なんとかやってみます。