C语言--编程实现字符串中子串的查找

编程实现字符串中子串的查找

 1 #include <stdio.h>
 2 #include <assert.h>
 3 //查找字符串中的某个字符串的位置
 4 const char *strstr(const char* src,const char* sub)
 5 {
 6     const char *bp;
 7     const char *sp;
 8     if(src==NULL || NULL==sub)//判断src与sub的有效性
 9     {
10         return src;
11     }
12     while(*src)//遍历src字符串
13     {
14         bp=src;//用于src的遍历
15         sp=sub;//用于sub的遍历
16         do
17         {            //遍历sub字符串
18             if(!*sp)//如果到了sub字符串结束符位置
19                 return src;//表示找到了sub字符串,退出
20         }while(*bp++ == *sp++);
21         src += 1;
22     }
23     return NULL;
24 }
25
26 int main()
27 {
28     char p[] = "12345";
29     char q[] = "34";
30     char *r = strstr(p,q);
31     printf("r:%s\n",r);
32
33     return 0;
34 }

程序运行结果:

r:345

原文地址:https://www.cnblogs.com/chua052/p/11394743.html

时间: 2024-10-09 20:12:00

C语言--编程实现字符串中子串的查找的相关文章

【转】Java中字符串中子串的查找共有四种方法(indexof())

原文网址:http://wfly2004.blog.163.com/blog/static/1176427201032692927349/ Java中字符串中子串的查找共有四种方法,如下:1.int indexOf(String str) :返回第一次出现的指定子字符串在此字符串中的索引. 2.int indexOf(String str, int startIndex):从指定的索引处开始,返回第一次出现的指定子字符串在此字符串中的索引. 3.int lastIndexOf(String st

Java中字符串中子串的查找共有四种方法(indexof())

Java中字符串中子串的查找共有四种方法(indexof()) Java中字符串中子串的查找共有四种方法,如下:1.int indexOf(String str) :返回第一次出现的指定子字符串在此字符串中的索引. 2.int indexOf(String str, int startIndex):从指定的索引处开始,返回第一次出现的指定子字符串在此字符串中的索引. 3.int lastIndexOf(String str) :返回在此字符串中最右边出现的指定子字符串的索引. 4.int las

字符串中子串的查找

字符串中子串的查找 // 字符串中子串的查找.cpp : 定义控制台应用程序的入口点. // // 字符串中子串的查找.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<stdio.h> #include<assert.h> #include<windows.h> const char *strstr(const char* src,const char* sub) { const char*

Java中字符串中子串的查找方法

Java中字符串中子串的查找共有四种方法: int indexOf(String str) :返回第一次出现的指定子字符串在此字符串中的索引. int indexOf(String str, int startIndex):从指定的索引处开始,返回第一次出现的指定子字符串在此字符串中的索引. int lastIndexOf(String str) :返回在此字符串中最右边出现的指定子字符串的索引. int lastIndexOf(String str, int startIndex) :从指定的

计算字符串中子串出现的次数。

/* 计算字符串中子串出现的次数. 算法:字符串最长匹配原则,以下是图解: abcabcabc abc 循环遍历母串前lenT-lenP: 循环遍历字串,用j指向子串,用k记录每一趟母串开始的位置,若p[j]==t[k]则k.j均后移 若j==子串长度lenP,则找到一个子串,次数++. */ #include<stdio.h> #include<math.h> #include<malloc.h> #include<string.h> main() { c

《Go语言编程》书中另外一处错误

<Go语言编程>一书中[2.4.1 条件语句]有一处错误,应当是书中使用Go语言版本低于1.1版所致,原文如下: 在有返回值的函数中,不允许将"最终的" return语句包含在if...else... 结构中,否则会编译失败:function ends without a return statement.失败的原因在于, Go编译器无法找到终止该函数的return语句.编译失败的案例如下:func example(x int) int {    if x == 0 { 

【C语言】在字符串中找出第一个只出现一次的字符。如输入“abaccdeff”,则输出’b’

//在字符串中找出第一个只出现一次的字符.如输入"abaccdeff",则输出'b' #include <stdio.h> #include <memory.h> char OneTime(char * str) { int data[256]; char *p = str; if (*p == '\0') return '\0'; memset(data, 0, sizeof(data)); while (*p ) { data[*p++]++; //把每种字

使用java语言,将字符串中连续重复出现的字母变成“出现次数“+字母的格式

今天在简书上看到这样一道有趣的算法题: 解题思路 首先定义一个变量element,默认是字符串的第一个字符.以element为基准元素,去判断某个字符是否重复.然后再去定义一个变量count去记录重复的次数,初始值应该为1. 然后我们去遍历整个字符串,应该从第1号位置的字符开始遍历.如果当前字符等于element,就说明该字符在当前字符串中出现过,已经重复了.那么count就应该自增. 如果当前字符不等于element,就说明上一个字符连续的重复次数已经计算完毕,可以进行拼接操作.接下来我们就可

C语言:将字符串中的前导*号全部移到字符串的尾部。

//规定输入的字符串中只包含字母和*号,fun函数:将字符串中的前导*号全部移到字符串的尾部. 1 #include <stdio.h> 2 void fun( char *a ) 3 { 4 char b[81]; 5 char *c,*d; 6 c = a; 7 int i = 0; 8 while (*c == '*') 9 { 10 c++; 11 } 12 d = c; 13 while (*c != '\0') 14 { 15 b[i] = *c; 16 i++; 17 c++;