我无法解决为什么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的新手,所以我确信我只是遗漏了一些非常基本的东西。我试图尽可能多地搜索网络,但我似乎并不能理解我做错了什么。
答案 0 :(得分:3)
strchr
将int
作为第二个参数,但您传递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]
。