gpt4 book ai didi

c - 即使要查找的字符串位于索引 0,我的 strstr() 也返回 null

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

我自己实现了 strstr(),该代码适用于所有字符串,但当字符串位于字符串的第一个索引时,它返回 null。

#include<stdio.h>

const char* mystrstr(const char *str1, const char *str2);

int main()
{
const char *str1="chal bhai nikal";
const char *str2="c",*result;
result=mystrstr(str1,str2);
if(*result!=NULL)
printf("found at %d location and the value is %s.",*result, str1+*result);
else
printf("Value not found");
getchar();
printf("\n");
return 0;
}

const char * mystrstr(const char *s1, const char *s2)
{
int i,j,k,len2,count=0;
char *p;

for(len2=0;*(s2+len2)!='\0';len2++); //len2 becomes the length of s2
for(i=0;*(s1+i)!='\0';i++)
{
if(*(s1+i)==*s2)
{
for(j=i,k=0;*(s2+k)!='\0';j++,k++)
{
if(*(s1+j)==*(s2+k))
count++;
else count=0;
if(count==len2)
{
p=(char*)malloc(sizeof(char*));
*p = i;
return p;
}
}
}
}
return NULL;
}

最佳答案

我没有看过你的 mystrstr 函数,只是 main

const char *str2="c",*result;
result=mystrstr(str1,str2);
if(*result!=NULL)
printf("found at %d location and the value is %s.",*result, str1+*result);
else
printf("Value not found");

result 是一个const char **result 是一个 const char

您是否可能混合使用 NULL 指针NUL 零终止符

result 可以是NULL*result可以是'\0'


编辑:可能的解决方案

当 strstr() 找不到子字符串时,它返回 NULL。假设你的 mystrstr() 以同样的方式工作,你做

/* result=mystrstr(str1,str2); */
result=NULL;

然后

if(*result!=NULL) {/* ... */} else {}

但是 *result 可以尝试取消引用 NULL 指针,这不是您想要的。
你想测试 result 本身

if (result != NULL) { /* ... */ } else {}

关于c - 即使要查找的字符串位于索引 0,我的 strstr() 也返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3850241/

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