模拟实现strstr函数。

//1.模拟实现strstr函数。
#include<stdio.h>
#include<assert.h>
char *my_strstr(char *str, char*p)
{
 char *cp = p;
 char *p1 = str;
 assert(*p);
 if (!*p)
  return NULL;
 if (!*p1)
  return NULL;
 char *p2 = str;
 while (*p1)
 {
  p2 = p1;
  cp = p;
  while (*p2&&*cp&&!(*p2 - *cp))
  {
   p2++;
   cp++;
  }
  if (!*cp)
  {
   return p1;
  }
  p1++;
 }
 return NULL;
}
int main()
{
 char str[100];
 scanf("%s", &str);
 char *p = "zbc";
 char *ret = my_strstr(str, p);
 printf("%s", ret);
}
时间: 2024-10-01 06:55:34

模拟实现strstr函数。的相关文章

模拟实现strstr函数

写一个函数,模拟strstr()函数,strstr()函数主要将主串中子串,以及以后的字符全部返回. 比如:在abbcdeef中查找bcde,返回bcdeef 思想: 1.遍历整个长串,然后找到与短串相同的位置,并且记录这个位置 2.与短串依次比较,若在后面某个位置不相同了,这时候,将刚记录的长串的位置后移一位继续比较:若一直都相同,则返回刚才记录的位置 3.如果长串遍历都没找到,则返回NULL #include<stdio.h> #include<stdlib.h> #inclu

【C语言】【面试题】【笔试题】模拟实现strstr函数

#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<assert.h> #include<stdlib.h> char *my_strstr(const char *dst,const  char *src) {     assert(dst);     assert(src);     char *p = dst;     char *s1 = p;     char *s2 = src;     

模拟实现strstr

模拟实现strstr: 在系统库函数中,存在strstr函数,它用于查找子字符串.它的函数原型为: char *strstr( const char *string, const char *strCharSet ); 这个函数中是要从*string中查找*strCharSet子字符串.因为只是查找,这两个字符串都不用发生改变,所以将他们声明为常量字符串. 模拟实现strstr: #include<stdio.h> #include<stdlib.h> char *my_strst

c语言 模拟 库函数 strstr()函数

//模拟 库函数  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

不使用C程序已有函数,模拟C++的strstr函数

strstr函数--输出主串的子串及其后面的所有字符 #include "stdafx.h" #include <iostream> #include <string> using namespace std; int main(int arc, char** argv) { char* str="cjc is a master!"; char* substr="is"; bool flag=false; int len=

模拟实现strstr和strrstr

strstr函数用于判断str2是否是str1的子串,如果是,则返回str2在str1中首次出现位置的地址,如果不是则返回NULL.其模拟实现代码如下:#include<iostream>  using namespace std;#include<assert.h>char* my_strstr(const char* str1, const char* str2){    assert(str1&&str2);    const char* p = str1; 

C语言::模拟实现strlen函数

编写一个C语言程序模拟实现strlen函数. 算法 strlen函数功能是计算字符串中字符的个数.(除\0外) 而字符串本身就是一个字符数组,只不过末尾以\0结束. 因此,我们只需遍历除\0之外的所有字符即可. 有三种方法可以解决这个问题. 算法总结 方法一:设置一个整型计数器,遍历字符串. 方法二:通过不断函数自身的递归. 方法三:与方法一类似,设置一个char*变量标记字符串尾部,通过指针相减得到字符长度. 核心代码 //方法一:通过设置整型计数器,模拟实现strlen函数. int my_

C语言::模拟实现strcmp函数

题目要求 编写一个C语言程序模拟实现strcmp函数. (我们依然先模拟实现strcmp函数,然后再对照string.h库中strcmp函数的实现,对比与大师之间的差距.) 算法分析 通过上一篇文章:C语言::strcmp函数功能.原型.用法及实例我们获得了strcmp函数的如下信息: strcmp原型:int strcmp( const char *s1, const char *s2 ); strcmp功能:将两个字符串自左向右逐个字符进行相比(根据ASCII值大小),直到出现不同的字符或遇

C语言::模拟实现strcat函数

题目要求 编写一个C语言程序模拟实现strcat函数. (我们不妨先模拟实现一下strcat函数,然后再对照一下string.h库函数中strcat函数代码的实现,与大师肩并肩.) 算法分析 strcat函数功能:将两个字符串连接起来,最终返回连接后字符串的首地址. strcat函数原型:char *strcat(char *dest,const char *src); 我们清楚地了解了strcat函数功能和原型之后,就很容易分析出算法... 算法总结 第一步:将dest指向的内容循环遍历至'\