2017-01-24 40 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

相关问题