在C中遇到strchr问题

时间:2015-07-04 11:05:36

标签: c strchr

我无法解决为什么Strchr()无法正常使用我的功能。我需要查看用户猜测是否匹配隐藏单词中的任何字母。这是一个刽子手游戏。

int guessLetter(char* word, int* guessedLetters)
{
    char guess[20];
    char *s;

    printf("Enter your guess: ");
    scanf("%s", &guess);

    s = strchr (word, guess);
    printf("%s", s);

    if (s != NULL) {
        printf ("Good Guess\n");
    } else {
        printf ("Bad Guess\n");
    }

}

无论猜测是对还是错,我的else语句都会被激活。我的printf表示,无论字符是否在单词中,s的值都为Null

所以我想我的问题在于代码的这一部分:

s = strchr (word, guess);

我是C的新手,所以我确信我只是遗漏了一些非常基本的东西。我试图尽可能多地搜索网络,但我似乎并不能理解我做错了什么。

1 个答案:

答案 0 :(得分:3)

strchrint作为第二个参数,但您传递char*。您打开编译器警告。

您想要的是循环word以查看guess中是否有任何字符。

s = 0;
for(size_t i=0; word[i]; i++) {
    s = strchr (guess, word[i]);
    if(s) break; //Found a match
}

这会在第一场比赛中中断,如果您想在word中检查所有字符,可以修改它。

scanf调用中的参数不匹配:

scanf("%s", &guess);

应该是

scanf("%s", guess);

scanf期望格式字符串char*%s,但您传递char(*)[20],即&guess类型为char (*)[20]