C语言 查找字符串子串 返回位置

原创 2017年04月12日 19:12:43

主要的思路就是,不断的从母串 str1 中取出和子串长度相等的临时子串 temp_str,与子串 str2 进行比较。没有找到子串,返回 -1;成功找到子串,返回子串首字母在母串中的位置,该位置从 0 开始。

#include <stdio.h>
#include <string.h>

char temp_str[30];    // 临时子串

void ReadStrUnit(char * str,char *temp_str,int idx,int len)  // 从母串中获取与子串长度相等的临时子串
{
    int index = 0;
    for(index; index < len; index++)
    {
        temp_str[index] = str[idx+index];
    }
    temp_str[index] = '\0';
}

int GetSubStrPos(char *str1,char *str2)
{
    int idx = 0;
    int len1 = strlen(str1);
    int len2 = strlen(str2);

    if( len1 < len2)
    {
        printf("error 1 \n"); // 子串比母串长
        return -1;
    }

    while(1)
    {
        ReadStrUnit(str1,temp_str,idx,len2);    // 不断获取的从 母串的 idx 位置处更新临时子串
        if(strcmp(str2,temp_str)==0)break;      // 若临时子串和子串一致,结束循环
        idx++;                                  // 改变从母串中取临时子串的位置
        if(idx>=len1)return -1;                 // 若 idx 已经超出母串长度,说明母串不包含该子串
    }

    return idx;    // 返回子串第一个字符在母串中的位置
}

int main()
{
    char *str1 = "abcdefghijk";
    char *str2 = "def";
    int i = 0;
    i = GetSubStrPos(str1,str2);
    if( i<0 )
    {
        printf("not found\n");
    }
    else
    {
        printf("i = %d\n",i);
    }

    return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。欢迎访问个人主页 http://cyang.tech https://blog.csdn.net/u011303443/article/details/70146384

C语言strstr()函数:返回字符串中首次出现子串的地址

头文件:#include strstr()函数用来检索子串在字符串中首次出现的位置,其原型为:     char *strstr( char *str, char * substr ); ...
  • qq_21792169
  • qq_21792169
  • 2016年04月13日 22:34
  • 4431

c语言:返回指定字符在指定字符串中第n次出现的位置(从0开始计算)

/*Function 返回指定字符在指定字符串中第n次出现的位置(从0开始计算)*/ /*函数原型 int myFunc(const char *s, char c, int n)*/ #includ...
  • lixiaogang_theanswer
  • lixiaogang_theanswer
  • 2017年05月05日 09:32
  • 773

C语言strchr()函数:查找某字符在字符串中首次出现的位置

头文件:#include strchr() 用来查找某字符在字符串中首次出现的位置,其原型为:     char * strchr (const char *str, int c); ...
  • qq_26093511
  • qq_26093511
  • 2017年02月12日 10:45
  • 5111

C 查找字符在字符串中位置的方法

/*****************************************************************************     *  @COPYRIGHT NOT...
  • cabinriver
  • cabinriver
  • 2013年05月17日 11:50
  • 29028

c语言,strchr(),查找字符串中第一次字符出现的位置

int main(void) { char string[15]; char *ptr, c = 's'; strcpy(string, "This is a string"); ptr =...
  • wsq724439564
  • wsq724439564
  • 2013年07月15日 20:05
  • 2324

C语言字符串查找位置

//在s1中查找s2,如果有返回s2在s1中的开始时的字节数,如果没有返回0 //例:int i = strstr1("abcdefg","cde");//i=3 //int i = st...
  • cnicfhnui
  • cnicfhnui
  • 2016年03月31日 10:40
  • 311

C语言 编写字符串操作函数strrchr,在字符串中查找目标字符最后一次出现的位置,返回指向这次位置的指针。

#include #include const char *my_strrchr(char const *str,int ch) { int i=0,len=0; len=strle...
  • u013265552
  • u013265552
  • 2015年04月11日 12:07
  • 452

C语言入门:查找子串

查找子串:输入两个字符串s和t,在字符串s中查找子串t,输出起始位置,若不存在,则输出-1.要求自定义函数char*  search(char * s,char * t)返回子串t的首地址,若未找到,...
  • qq_39805477
  • qq_39805477
  • 2017年08月12日 17:37
  • 983

C语言版字符串查找函数,字符串中查找子串

C语言版字符串查找函数,字符串中查找子串
  • dezhihuang
  • dezhihuang
  • 2015年11月04日 20:57
  • 5951

C语言——删除字符串中的指定子串

问题描述:  在给定字符串中查找所有特定子串并删除,如果没有找到相应子串,则不作任何操作。 要求实现函数:  int delete_sub_str(const char *str, cons...
  • Eleanor_12
  • Eleanor_12
  • 2016年12月25日 21:20
  • 670
收藏助手
不良信息举报
您举报文章:C语言 查找字符串子串 返回位置
举报原因:
原因补充:

(最多只允许输入30个字)