gpt4 book ai didi

c++ - 实现strstr

转载 作者:太空宇宙 更新时间:2023-11-04 16:28:49 25 4
gpt4 key购买 nike

我正在尝试从头开始编写 strstr 函数。我在调试器中逐行检查我的代码,它工作正常。但是,它没有正确保存其搜索的子字符串的开头。因此,它没有正确返回它。我没有太多的编程经验,所以我的代码有点困惑和复杂。但是,它在大多数情况下确实有效。下面是我的代码(为我的教授和你们所有人评论我做了什么)。 (另外,我的教授已经表示接受goto函数)

char *strgstr(const char *str1, const char *str2)
{
//I went through this function line by line with the debugger
//The only problem with it is when I go to save the location of the
//substring in str1.
//I posted a question on stackoverflow and I was able to get it to compile
//but it still doesn't save and return properly. The rest of the function works.
int len_str1=strlen(str1);
int len_str2=strlen(str2);
char *save_str=NULL;
int i=0;
for(; i<len_str1; i++)
{
there:
if(str1[i]==str2[0]) //checks if this is the beginning of str2
{
save_str=(char*)str1[i]; //This is where the problem is.
int j=0; //start at beginning of str2
for(;i<len_str1;i++) //index str1
{
if(j<len_str2) //checks if we've finished searching str2
{
if(str1[i]!=str2[j])
{
goto there;
}
j++;
}
else
{
return save_str; //does not return properly. I can't figure out how to save a particular point in the index to a pointer.
}
}
}

}
}

最佳答案

你写的那行

save_str=(char*)str1[i];    //This is where the problem is. 

应该是(例如)

save_str = str1 + i;   

您的原始版本将字符的数值视为指针,这是完全错误的。

关于c++ - 实现strstr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9321812/

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