2017-01-24 37 views
0

我在比較一個字符與if語句中的字符串有問題。 我試圖讓一個不太複雜的Hang子手版本,我被困在這一部分。 我已經嘗試了一切從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(); 
} 

我不知道該怎麼做,而且我到處搜索我能做些什麼。我不想使用已經制作好的Hang子手遊戲,因爲我試圖教自己爲初學者,因爲這些代碼對於我簡單的頭腦來說太複雜了。

我想保持我的代碼簡單,並且可以在上面的代碼中看到,一切設置都很簡單。我完成代碼還有很長的路要走,但我只想在繼續之前找到解決此問題的解決方案。

謝謝!

+1

'char word [3] =「car」;' - 呃,哦!這是行不通的。你需要4個字符來存儲字符串「汽車」。記住你需要一個額外的字符作爲空終止符。 –

+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

相關問題