原帖由 "luojiannx" 发表:
呵呵,刚才才想到,被你贴了
这个真的有点隐秘
原帖由 "hades666" 发表:
#include <stdio.h>;
#include <string.h>;
int _strlen(char *str)
{
int len=0;
while(*str++!='\0')
len++;
return len;
}
char *my_strstr(char *haystack, char *needle)
{
char *ptr_h=haystack,*ptr_n=needle;
int len=_strlen(needle);
if(_strlen(haystack)<len)
return NULL;
while((*ptr_h++ == *ptr_n++) && --len>;0 );
if(len==0)
return haystack;
return my_strstr(ptr_h,needle);
}
int main()
{
char *s1="abcdeffffff",*s2="ef";
printf("%s\n",my_strstr(s1,s2));
return 0;
}
原帖由 "luojiannx" 发表:
你的第一个if的结束的花括号地方放错了,应把第2个while循环包括进来,循环结构要改下,刚开始加加会有点小问题,第一个字母就比较不了了
原帖由 "mik" 发表:
没看我的第一点说明吗? 我当然知道可以用while, 我考虑过,但为了简洁与高效。
你用while来写一个,切磋切磋
原帖由 "jxg945" 发表:
$ ./a.out backackabc abc执行
或者./a.out backackabc abcd执行
您看看
原帖由 "mq110" 发表:
还有 你的程序不符合 strstr的函数原形
char *strstr(const char *haystack, const char *needle);
既然能用while 改. 我想你也不必再用goto.
欢迎光临 Chinaunix (http://bbs.chinaunix.net/) | Powered by Discuz! X3.2 |