模拟实现在一个字符串中查找一个字符串

在标准库中有一个函数strstr()用于在一个字符串中查找一个规定的字符串,这个函数可以模拟实现一下,代码如下:

#include <stdio.h>
#include <assert.h>
char *my_strstr(const char str[],const char strstr[])
{
 int i = 0,j = 0,k = 0;
 assert(str != NULL);
 assert(strstr != NULL);
 for(i = 0;str[i] != ‘\0‘;i++)
 {
  k = i;
  for(j = 0,k = i;(strstr[j] != ‘\0‘)&&(str[k] == strstr[j]);j++,k++)
  {
   ;
  }
  if(strstr[j] == ‘\0‘)
   return strstr;
 }
 if(str[i] == ‘\0‘)
  return NULL;
}
int main()
{
 int c = 0;
 char *p;
 char *str = "abcdddddefgh";
 char *strstr = "ddddef";
 p = my_strstr(str,strstr);
 if(p == NULL)
  printf("not exist\n");
 else
  printf("%s\n",p);
 return 0;
}

因为字符串str与字符串strstr不需要被更改,所以可用const来限定,而在函数开始处设定assert来用于断定字符串是否为NULL,assert为条件断言,只在debug下生效,在release下不会被编译,判断条件为真继续执行代码,为假则报错。

时间: 2024-11-04 11:56:13

模拟实现在一个字符串中查找一个字符串的相关文章

【C语言】模拟实现strchr函数.即在一个字符串中查找一个字符第一次出现的位置并返回

//模拟实现strchr函数.即在一个字符串中查找一个字符第一次出现的位置并返回 #include <stdio.h> //#include <string.h> #include <assert.h> char* my_strchr(char *dst, char src) { assert(dst); while (*dst != '\0') { if (*dst == src) return dst; dst++; } return 0; } int main()

【c语言】模拟实现strchr函数,功能:在一个字符串中查找一个字符第一次出现的位置,如果没有出现返回NULL

// 模拟实现strchr函数,功能:在一个字符串中查找一个字符第一次出现的位置,如果没有出现返回NULL #include <stdio.h> #include <assert.h> char const* my_strchr(char const *p,char c) { assert(p != NULL); while (*p) { if (*p == c) return p; else p++; } return NULL; } int main() { char *p =

在父字符串中查找子字符串

在父字符串中查找子字符串(指针控制,也可选择标控制) #pragma once #include<iostream> #include<assert.h> using namespace std; char* StrStr(char* source, char* dest) { assert(source&&dest); if (strlen(source) < strlen(dest)) return NULL; char* newSrc = NULL; c

用最快的方法找到字符串中某一个字符串的个数

以前自己做过用for循环遍历的,但今天忽然有人问用最简单的方法达到效果,就渗死了一下.顿时觉得以前的思想太low了,很多问题都没有思想去努力做到最好. 现将最简单代码思想分享如下: 在java.lang.string中有一个常用的字符串拆分方法string.split("str").利用这种方法我们可以将字符串按我们要求的字符串拆分为一个字符串数组,然后用.length获得字符串数组的长度int,用int-1,就得到了str在string出现的次数了!是不是很easy?编程的世界里思想

eclipse中在整个工程中查找一个字符串的步骤

1.在Eclipse中使用快捷键ctrl + h 后弹出 tab选项,2.你选择 file search 然后在下面输入要查找的字符串3.workset 那里选择你要查找的项目默认是全部项目进行查找也可以选择指定项目查找.

40 python 正则表达式 match方法匹配字符串 使用search函数在一个字符串中查找子字

第一课: 使用match方法匹配字符串 # 正则表达式:使用match方法匹配字符串 ''' 正则表达式:是用来处理文本的,将一组类似的字符串进行抽象,形成的文本模式字符串 windows dir *.txt file1.txt file2.txt abc.txt test.doc a-file1.txt-b linux/mac ls 主要是学会正则表达式的5方面的方法 1. match:检测字符串是否匹配正则表达式 2. search:在一个长的字符串中搜索匹配正则表达式的子字符串 3. fi

字符串中查找子串

使用C语言编写程序: 1.在字符串中查找一个指定的字符第一次出现的位置,并返回字符所在的位置,如果不存在则返回NULL 具体实现如下: char* strchr(char const *str, int ch) { char* st = (char*)str; while (st) { if (*st == ch) return st; st++; } return NULL; } 2.在字符串中查找一个指定的字符串第一次出现的位置,并返回字符所在的位置,如果不存在则返回NULL 具体实现如下:

C 语言 查找一个字符串2在字符串1中出现的次数

#include <stdio.h> #include <windows.h> int main() { char a[100], b[100]; char *temp; int counter = 0; memset( a, sizeof(a), 0 ); //清空内存 memset( a, sizeof(b), 0 ); //清空内存 printf( "Please input source string: " ); gets(a); //从缓冲区获取源字符

JavaScript替换字符串中最后一个字符

1.问题背景 在一个输入框中,限制字符串长度为12位.利用键盘输入一个数字,会将字符串中最后一位替换,比方:111111111111.再输入一个3,会显示111111111113 2.详细实现 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html x