因此,我编写了一个 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;
}