C 中 strchr 的问题

Trouble with strchr in C

我不明白为什么 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 的新手,所以我确定我只是缺少一些非常基本的东西。我已尝试尽可能多地搜索网络,但我似乎真的无法理解我做错了什么。

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.

中的 all 个字符,您可以修改它

scanf 调用中也存在参数不匹配:

scanf("%s", &guess);

应该是

scanf("%s", guess);

scanf 期望格式字符串 %schar* 但您传递的是 char(*)[20]&guesschar (*)[20] 类型。