首页 > 其他分享 >模拟实现strstr函数的代码——《初学C语言第40天》

模拟实现strstr函数的代码——《初学C语言第40天》

时间:2023-12-27 13:32:28浏览次数:29  
标签:strstr s2 s1 40 C语言 char ret 字符串 str1

//////模拟实现strstr

////(字符中的元素是连续存放的,所以不会存在跳动存放的情况,例如a1="ababcd",a2="ac"此结果就是NULL)

////情况1.arr1="abcd"arr2="abc"(一次匹配就找到了)

////情况2.arr1="ababcd"arr2="abc"(多次匹配才能找到)

//#include <stdio.h>

//#include <string.h>

//#include<assert.h>

//char* my_strstr(char* str1, const char* str2)

//{

// assert(str1 && str2);//断言是为了保证两个指针有意义

// //设置s1,s2的原因是为了防止改动str1或str2会影响查找时位置的变动,因此提前保存或创建一份

// const char* s1 = str1;

// const char* s2 = str2;

// const char* p = str1;

// while (*p)

// {

//  s1 = p;//为了让s1随p的变动而变动(是为了情况2发生时直接跳过多余操作)

//  s2 = str2;

//  while (*s1 != '\0' && *s2 != '\0' && *s1 == *s2)

//  //*s1 == *s2是为了说明此位置的字符相等,然后经过各自的自增去查找后面的是否相等

//  //*s1 != '\0' && *s2 != '\0'是为了说明,找子字符串时都找到末尾了,只能是找到或没找到

//  {

//   s1++;

//   s2++;

//  }

//  if (*s2 == '\0')//*s2 == '\0'是为了说明s2已经全部找到才会等于\0,因此返回p(子字符串所在字符串的第一个字符的位置)

//  {

//   return p;

//  }

//  p++;//当判断此处的情况同于情况2时,就直接进行下一位的匹配,跳过多于步骤

// }

// return NULL;//此处返回的值均为ret的值

//}

//int main()

//{

// char str[] = "This is a simple string";

// char* pch= "simple";

// char* ret = my_strstr(str,pch);//此处的ret的类型char*时声明函数的返回类型,应保持一致

// if (ret == NULL)

// {

//  printf("子字符串不存在于字符串中\n");

// }

// else

// {

//  printf("子字符串不存在于字符串中,为:%s\n",ret);

// }

// return 0;

//}



标签:strstr,s2,s1,40,C语言,char,ret,字符串,str1
From: https://blog.51cto.com/KKhahaha/8998821

相关文章

  • Day40 数组的使用
    数组的使用1.普通的for循环packagecom.baixiaofan.array;publicclassArrayDemo03{publicstaticvoidmain(String[]args){int[]arrays={1,2,3,4,5};//打印全部数组元素for(inti=0;i<arrays.length;i++){Sys......
  • 中馥集团单日GMV破4000万
    新年将至,随着消费者用酒需求的增多,酒水旺季即将来临。中馥全员一条心,本着让每个人喝上好酒的使命,全力以赴迎战旺季,所有销售通道大幅突破,昨日迎来首个销售高峰,单日GMV突破4000万!(*均为中馥集团独家总经销产品)中馥集团多元化的产品矩阵,全方位的满足客户自用、宴请、礼赠的需求:高端奢华......
  • nginx部署vue编译项目刷新页面404
    原因:nginx配置错误。因为vue打包输出的是单页网页应用,只有一个index.html入口,其他路径是由前端路由去跳转的,服务器目录下没有对应物理路径,所以就会报404。这样的nginx配置会出现该问题。location/{alias/home/vue/dist/;indexindex.html;}  解......
  • HDU 1404 ”Solitaire“ (双向广搜)
    HDU1404”Solitaire"OJ:https://acm.hdu.edu.cn/showproblem.php?pid=1401题目大意:8*8的棋盘,上面有四个棋子,棋子可以上下左右移动,如果在上下左右移动的时候该位置有一个棋子已经放置,可以跳过这个棋子放在后面,不可以连续跳过两个。给一个初始状态和一个目标状态。是否可以在......
  • 40.Android fastbot遍历测试工具
    Fastbot介绍基于model-basedtesting结合机器学习、强化学习的APP稳定性测试工具Fastbotisamodel-basedtestingtoolformodelingGUItransitionstodiscoverappstabilityproblems.Itcombinesmachinelearningandreinforcementlearningtechniquesto......
  • 常见的网页错误代码:404、405、500......解析
    1、400  请求出错(服务器无法理解用户的请求):可能输入格式有误,服务器无法理解我们想要表达什么 比如:①有可能是前端请求时参数拼接有问题②有可能时前端传给后端的参数类型与后端接收的参数类型不匹配,比如前端传String,后端用Integer接收,③有可能是后端的实体类没有配置无参构......
  • 2203840415蔡浛翊
    选题背景介绍商业和住宅建筑在内的建筑业的全球能源消耗约为20%。随着人口的快速增长和经济增长,预计从1年到3年,建筑物的能源消耗将以每年2018.2050%的速度增长;这种不断增长的能源需求引起了全世界对其对环境负面影响的极大关注。为了满足不断增长的电力需求,需要高效且具有成本效......
  • P5840 [COCI2015] Divljak
    题意:Alice有\(n\)个字符串\({S}_1,{S}_2,\ldots,{S}_n\),Bob有一个字符串集合\({T}\),一开始集合是空的。接下来会发生\(q\)个操作,操作有两种形式:1P:Bob往自己的集合里添加了一个字符串\({P}\)。2x:Alice询问Bob,集合\({T}\)中有多少个字符串包含串\({S}_x\)(......
  • 如何在IIS上部署docsify以及404问题
    操作步骤创建一个文件夹,在文件夹中新建2个文件index.html:入口文件,整个网站只需要这个html文件,其他文件都是md文件README.md:主页内容,如果没有这个文件,访问时提示404<!DOCTYPEhtml><html><head><metahttp-equiv="X-UA-Compatible"content="IE=edge,chrome=1"><......
  • C语言: 函数 值传递 || 指针传递
    在C语言中,函数可以使用指针传递和值传递来传递参数。通常情况下,使用值传递是最常见和最简单的方式。在值传递中,函数的参数会被复制一份,然后传递给函数。这意味着在函数内对参数的修改不会对原始数据产生影响。当你只需要传递一个简单的数据类型,如整数或浮点数时,值传递是......