#include<stdio.h> #include<string.h> char *mystrstr(const char* s1,const char* s2) { int num=0; int i,a,b,c=0; int d; d=strlen(s2); while(s1[i]!=0 && a<=d-1) //hello el { c=i; while(s1[i]==s2[a]) { i++; a++; } //3 2 if(s2[a]==0) { return *s1[c]; } i=c; i++; } return NULL; } int main() { char s2="helloworld"; char s3="ow"; printf("%s\n",mystrstr(s2,s3)); }
时间: 2024-04-08 17:33:15 浏览: 52
c语言函数库-第一章(C标准库).doc
您的代码中存在一些错误和潜在的问题。首先,您定义的`s2`和`s3`应该是字符数组而不是字符指针,因此应该使用双引号`""`而不是单引号`''`来定义字符串。
其次,在函数`mystrstr`中,您没有对变量进行初始化。变量`i`和`a`应该初始化为0,以确保循环的正确执行。
此外,您在循环中使用的变量`d`应该是`s2`的长度,而不是`s1`的长度。所以应该使用`strlen(s2)`而不是`strlen(s1)`。
最后,在找到匹配字符串后,您应该返回指向`s1`中匹配字符串的指针,而不是返回`s1[c]`,因为`s1[c]`是一个字符而不是指针。
下面是修正后的代码:
```c
#include<stdio.h>
#include<string.h>
char *mystrstr(const char* s1, const char* s2)
{
int i = 0, a = 0, c = 0;
int d = strlen(s2);
while (s1[i] != '\0' && a <= d - 1)
{
c = i;
while (s1[i] == s2[a])
{
i++;
a++;
}
if (s2[a] == '\0')
{
return (char*)(s1 + c);
}
i = c;
i++;
}
return NULL;
}
int main()
{
char s2[] = "helloworld";
char s3[] = "ow";
printf("%s\n", mystrstr(s2, s3));
return 0;
}
```
这个修正后的代码将在找到匹配字符串时返回`s1`中匹配字符串的指针,如果找不到匹配字符串,则返回`NULL`。
阅读全文