2017-01-27 5 views
0

これは何が間違っているかわからないようです。それはうまくコンパイルされますが、私が何を入れても、それは「はい」または「いいえ」です。「行こう」行をスキップし、最後までまっすぐに進みます。ユーザ入力:CでYesまたはNo

#include<stdio.h> 
#include<stdlib.h> 

int main(){ 
    char response[5]; 
    printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); 
    printf("Would you like to go on an adventure?\n Enter Yes or No:"); 
    scanf("%s", response); 
    if (response == "yes"){ 
     printf("Let's begin!"); 
    } 
    else (response == "no");{ 
     printf("See you later then!"); 
    } 
    return 0; 
} 

スキャンを移動する必要がありますか、どういう意味ですか?

+0

。配列で使用する場合は、2つの配列の1番目の要素のアドレスを比較します。 – alk

答えて

1

変更

if (response == "yes"){ 

if(!strcmp(response, "yes") { 

に "ノー" を明示的に "ノー" をチェックしたい場合はelse if(!strcmp(response, "no") {を書き、チェックしてください。

+1

そして、OPはelse中の '(response ==" no ")'を削除しなければなりません。 – lurker

+0

これをキャッチしてくれてありがとう、私は私の答えを更新しました。 –

+0

ねえ、それはそれを修正!ありがとう、トン。私は==を文字に使用できないという手がかりはありませんでした。 – hego64

0

文字の配列を比較しています。だから==は動作しません。 2つの文字配列に対してequals関数を実装するか、文字列クラスを使用します。

0
if (strcmp(response, "yes")==0){ 
    printf("Let's begin!"); 
} 
else { 
    printf("See you later then!"); 
} 

2つの文字配列を比較することはできません。文字列が同じ場合は、strcmpから0が返されます。含めるようにしてください。 `==`比較しない配列を使用すると、代わりに、直接あなたがstrcmpを使用することができ、代入演算子を使用して、文字の配列を比較することはできませんCプログラミングに

0

を確認するために、両方の文字列が等しいかどうか

関連する問題