0

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

4

1 回答 1

3

strchr将 aint作为第二个参数,但您传递的是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*for 格式字符串%s,但您传递的是char(*)[20]ie&guess类型char (*)[20]

于 2015-07-04T11:11:00.840 回答