gpt4 book ai didi

c - 字符串函数中的子字符串搜索给出了不正确的值

转载 作者:行者123 更新时间:2023-11-30 14:41:59 26 4
gpt4 key购买 nike

我创建了一个行为方式很奇怪的程序——我不确定为什么它给出了不正确的值。例如,当我使用输入:(“话匣子”,“帽子”)时,它可以正常工作:

    The starting position is 3.
String 'hat' occured for 1 time(s).

但是如果我删除空格(“achatterbox”、“hat”),它会显示:

String 'hat' occured for 0 time(s).

练习说明:

/* 编写一个名为 findString() 的函数来确定一个字符串是否存在于另一个字符串中。该函数的第一个参数应该是要搜索的字符串,第二个参数是您有兴趣查找的字符串。如果函数找到指定的字符串,则让它返回源字符串中找到该字符串的位置。如果函数没有找到该字符串,则返回−1。因此,例如,调用单击此处查看代码 image index = findString("a chatterbox", "hat");在字符串“a chatterbox”中搜索字符串“hat”。由于“hat”确实存在于源字符串中,因此该函数返回 3 以指示在源字符串中找到“hat”的起始位置。 */

我的代码:

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

int findString (char motherArgument[], char childArgument[]);


int main(int argc, char const *argv[])
{

printf("%s",findString ("a chatterbox", "hat")); //why if I remove space ' ' this does not work, why?
return 0;
}


int findString (char motherArgument[], char childArgument[]) // is child inside the mother?
{

int i, flag = false, freq = 0;

for (i = 0; i < strlen(motherArgument); i++) // going through mother
{
if(motherArgument[i] == childArgument[i]) // chars equal?
{
flag = true;
printf("The starting position is %d.", i - 1); // i -1 to get 3 as in the example
freq++; // frequency
}

}
if (flag = true)
{
printf("\nString '%s' occured for %d time(s).\n", childArgument, freq);
}

else
{
printf("None\n"); // false = none
return -1;
}


}

我做错了什么?我应该以不同的方式输入数据吗?

最佳答案

if(motherArgument[i] == childArgument[i])

这是不正确的。您不应该对两个字符串使用相同的索引。

搜索 motherArgument,直到找到与 childArgument 的第一个字符匹配的字符。如果找到,继续检查两个字符串后续字符是否相等。

关于c - 字符串函数中的子字符串搜索给出了不正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54659105/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com