首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C中的strchr故障

C中的strchr故障
EN

Stack Overflow用户
提问于 2015-07-04 11:05:35
回答 1查看 1.5K关注 0票数 0

我不明白为什么Strchr()没有在我的函数中工作。我需要看看用户是否猜到了隐藏单词中的任何字母。这是汉格曼的游戏。

代码语言:javascript
复制
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的值。

所以我想我的问题是代码的这一部分:

代码语言:javascript
复制
s = strchr (word, guess);

我是新来的C,所以我相信我只是错过了一些非常基本的东西。我试着尽可能多地搜索网页,但我似乎并不能真正理解我做错了什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-04 11:11:00

strchr将一个int作为第二个参数,但您正在传递一个char*。打开编译器警告。

您想要的是在word上循环以查看是否有任何字符在guess中。

代码语言:javascript
复制
s = 0;
for(size_t i=0; word[i]; i++) {
    s = strchr (guess, word[i]);
    if(s) break; //Found a match
}

这将在第一次匹配时中断,如果要检查word中的所有字符,则可以修改它。

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

代码语言:javascript
复制
scanf("%s", &guess);

应该是

代码语言:javascript
复制
scanf("%s", guess);

scanf需要格式字符串%schar*,但您要传递char(*)[20],即&guess的类型为char (*)[20]

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31219866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档