gpt4 book ai didi

谁能帮我找到这个 C 函数中的错误吗?

转载 作者:行者123 更新时间:2023-11-30 20:43:37 24 4
gpt4 key购买 nike

因此,我编写了一个 mystrstr() 函数,其行为应与原始 strstr() 函数完全相同。我已经测试了大量的案例,我的功能似乎有效。但是,它没有通过在线提交系统的一些测试。

你能帮我吗?

int mystrcmp(char *a, char *b)
{
int n = mystrlen(a);
int m = mystrlen(b);
int l = n;
if (m<n) l = m;

//printf("strcmp => %d %d\n", n, m);
for (int i=0; i<l; i++)
{
//printf("%c %c\n",a[i],b[i]);
if (a[i]<b[i]) return -2;
else if (a[i]>b[i]) return 2;
}

if (n<m) return -1;
else if (n>m) return 1;
else return 0;
}


char *mystrstr(char *haystack, char *needle)
{
int n = mystrlen(haystack);
int m = mystrlen(needle);
if (n==0&&m==0) return haystack;
int result;

for (int i=0; i<=(n-m); i++)
{
result = mystrcmp(haystack+i, needle);
if (result==1||result==0||result==-1)
return haystack+i;
}
return NULL;
}

最佳答案

请注意,您的 mystrcmp 是多余的。您只需使用

if (!memcmp(haystack+i, needle, m)) {
return haystack+i
}

如果您不被允许使用memcmp,那么请编写您自己的。但丢弃mystrcmp

关于谁能帮我找到这个 C 函数中的错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13436177/

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