【问题标题】:Cannot find the position of an array of char in another array of char在另一个 char 数组中找不到 char 数组的位置
【发布时间】:2016-03-07 04:37:21
【问题描述】:

这是我的代码:

#include<stdio.h>
#include<string.h>

int main (){
    char prop[100], cuv[10], poz[100];
    fgets(prop, 100, stdin);
    fgets(cuv, 10, stdin);
    printf("%ld\n", strstr(prop, cuv) - prop);
    puts(prop);
    puts(cuv);
    return 0;
}

但是,当我运行它并给它这个输入时:

安娜只是

这是第二个字符串:

输出如下:

-2752172

我使用了与in this question 相同的方法。我应该在代码中更改什么?

【问题讨论】:

  • 把它放在调试器中,设置断点,然后单步执行。
  • 检查strstr()的返回值比盲目使用更能说明问题。
  • 我使用调试来检查 strstr() 和减法的返回值。我不知道关于 fgets() 的事情 '\n',我为此感到羞愧,但现在我一定会记住这一点,感谢您的帮助!

标签: c arrays string


【解决方案1】:

这两个字符串都包含一个新行,比如"Ana are mere\n""are\n",但在字符串"Ana are mere\n" 中没有"are\n" 所以这就是为什么,我们可以使用这个语句从"are\n" 中删除新行"cuv[strlen(cuv)-1] = '\0';""fgets(cuv, 10, stdin);" 之后

【讨论】:

    【解决方案2】:

    在字符串"Ana are mere\n"中找不到文本"are\n"

    因此strstr返回NULL

    要获得预期的输出,您需要确保没有在搜索字符串中获得最终的回车符 (\n)。

    【讨论】:

    • 这是有道理的,为什么“仅仅”这个词给出了正确的输出,谢谢你的回答!
    • 我添加了以下行: cuv[strlen(cuv) - 1] = 0;在第二个 fgets() 之后,它就像一个魅力!
    猜你喜欢
    • 2012-01-23
    • 1970-01-01
    • 2013-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多