//模拟 库函数 strstr()函数 //从父字符串(较长)找到 完全相同子字符串(较短); //返回相同字符串在父字符串中的首字符的地址; #include<stdio.h> char * my_strstr(char arr[],char arr1[]) { char *p1=NULL,*p2=NULL,*p=NULL; int i = 0,j = 0,k=0,m=0; p1 =&arr[0]; p2 = &arr1[0]; while (1) { if (arr1[0] == '\0') { printf("子数组有效长度不正确!\n"); return NULL; } if(*p2=='\0') break; i++; p2++; } while (1) { if (arr[0] == '\0') { printf("父数组有效长度不正确!\n"); return NULL; } if(*p1=='\0') break; j++; p1++; } if (i > j) { printf("字数组比父数组大!无法查询!\n"); return NULL; } p1 =&arr[0]; p2 = &arr1[0]; j=0; while (1) { if (*p1 == *p2) { p = p1; p1++; p2++; m=0; k++; } else { p1++; j++; if(m==0) { m=1; k=0; p2=&arr1[0]; } } if (k == i) return p-k+1; if (p1 == NULL || p2 == NULL||*p1=='\0') break; } return NULL; } int main() { char arr[20] = "0"; char arr1[20] = "0"; char* p = NULL; printf("请输入20字符以内的字符串:"); gets(arr); printf("请输入查询的子字符串:"); gets(arr1); p = my_strstr(arr, arr1); if (p == NULL) { printf("你的输入有问题或查找失败!\n"); } else printf("子字符串在父字符串中的首元素地址为:%p\n",p); printf("arr数组首元素地址为(自己对着数数):%p\n",&arr[0]); return 0; }
c语言 模拟 库函数 strstr()函数
原创文章标签 C语言;模拟strstr库函数;数组与指 文章分类 C/C++ 后端开发
©著作权归作者所有:来自51CTO博客作者霜柒染的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:C语言 三子棋 小游戏
下一篇:c语言 链表基础
![](https://ucenter.51cto.com/images/noavatar_middle.gif)
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
C语言中模拟实现strcpy,strstr,strcat函数
C语言中模拟实现strcpy,strstr,strcat函数
C语言.strcpy.strstr/st