2017-01-24 11 views
0

文字をif文内の文字列と比較する際に問題があります。 私はHangmanのあまり複雑すぎないバージョンを作ろうとしていて、私はこの部分に固執しています。 私はstrcmp()strchr()などのすべてを試しましたが、何も動作していないようです。C - if文に変数を一重引用符または二重引用符で囲む方法はありますか?

#include<stdio.h> 
#include<string.h> 

int main() { 
    int length, i; 
    int size=3; 
    char word[size]="car"; 
    char letter; 
    //const char* word="car"; 
    //const char* letter; 
    int guess; 
    length=strlen(word); 

printf("The given word has %d letters.\n", length); 
//do { 
    guess=0; 
    printf("Enter a letter:"); 
    scanf("%c", &letter); 
    for (i=0; i<length; i++) { 
     if (letter== 'word[i]' && guess==0) { 
      guess=1; 
     } 
     /*if (strchr(letter, word[i])!=NULL && guess==0) { 
      guess=1; 
     }*/ 
    } 
    if (guess=1) { 
     printf("Correct letter.\n"); 
    } 
    else { 
     printf("Wrong letter.\n"); 
    } 
//} while(); 
} 

私は何をすべきかというアイデアがありません。私は何をすることができるかについてはどこでも調べています。私は初心者として自分自身を教えようとしているので、すでに作られたハングマンゲームを使用したくないし、それらのコードは私の単純な心のために複雑すぎるためです。

私はコードを単純にしていますが、上のコードでわかるように、すべてが非常に簡単に設定されています。私はコードを完成させるにはまだまだ長い道のりですが、私が続行する前にこの問題の解決策を探したいだけです。

ありがとうございます!

+1

'char word [3] =" car ";' - ああ、ああ!それは動作しません。文字列 "car"を格納するには4つの文字が必要です。ヌルターミネータのために1つの余分なcharが必要であることを忘れないでください –

+1

あなたのコードは確実に動作しますか? O_o、私は、この行を見ていない 'letter == 'word [i]' ' –

答えて

3

word[i]letterはいずれもcharですので、比較してください。

if (letter==word[i] && guess==0) { 

その他のエラー:

scanf("%c", &letter); 

あなたがそうでなければ、改行文字を読み終わるだろう、任意の空白を食べるように、パターンの開始時に先頭にスペースが必要です。また

scanf(" %c", &letter); 

if (guess=1) { 

これは代入ではなく、比較したものです。あなたが欲しい:

また
if (guess==1) { 

int size=3; 
char word[size]="car"; 

配列を使用して、ヌル終端文字のための部屋を持っていないので、十分な大きさではありません。この場合、サイズを省略すると、コンパイラは正しい値を使用します。

char word[]="car"; 
+0

それは完璧に動作します。乾杯! – Tremmert

関連する問題