我不明白为什么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,所以我相信我只是错过了一些非常基本的东西。我试着尽可能多地搜索网页,但我似乎并不能真正理解我做错了什么。
发布于 2015-07-04 11:11:00
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需要格式字符串%s的char*,但您要传递char(*)[20],即&guess的类型为char (*)[20]。
https://stackoverflow.com/questions/31219866
复制相似问题