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 的新手,所以我确定我只是缺少一些非常基本的东西。我已尝试尽可能多地搜索网络,但我似乎真的无法理解我做错了什么。
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
.
中的 all 个字符,您可以修改它
scanf 调用中也存在参数不匹配:
scanf("%s", &guess);
应该是
scanf("%s", guess);
scanf
期望格式字符串 %s
的 char*
但您传递的是 char(*)[20]
即 &guess
是 char (*)[20]
类型。
我不明白为什么 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 的新手,所以我确定我只是缺少一些非常基本的东西。我已尝试尽可能多地搜索网络,但我似乎真的无法理解我做错了什么。
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]
类型。