zoukankan      html  css  js  c++  java
  • 字符串子串查找strstr

    问题:

    函数名: strstr
    函数原型:char *strstr(const char *str1, const char *str2);
    语法:* strstr(str1,str2)
    str1: 被查找目标 string expression to search.
    str2: 要查找对象 The string expression to find.
    返回值:该函数返回str2第一次在str1中的地址,如果没有找到,返回NULL
    例子:
    charstr[]="1234xyz";
    char*str1=strstr(str,"34");
    得到str1="34xyz"
     

    方法1:

    一个指针扫描,当首字母相同时两个指针扫描两个字符串比较。

    代码如下:

    #include <stdio.h>
    #include <string.h>
    #include <assert.h>
    
    char* mystrstr(const char* str1,const char* str2)//str1 is the original string 
    {
        assert(str1 != NULL);
        if(str2 == NULL) return (char*)str1;
        while(str1 != ''){
            if(*str1 != *str2) str1++;
            else{
                char* ori = str1;
                char* des = str2;
                while(*des != ''){
                    if(*ori == *des){
                        ori++;des++;
                    }
                    else break;
                }
                if(*des == '') return str1;
            }
        }
        return NULL;
    }
    
    int main(){
        char ori[]="sdggdfhhttyusdfge";
        char des[]="ttyu";
        char* ret=mystrstr(ori,des);
        printf("%s
    ", ret);
        return 0;
    }

    结果是

    [root@admin Desktop]# ./a.out
    ttyusdfge

    方法2:

    类似的方法,练练手:

    #include <stdio.h>
    #include <string.h>
    
    char* mystrstr(const char* str1,const char* str2)//str1 is the original string 
    {
        int len2 = strlen(str2);
        int len1 = strlen(str1);
        if(!len2) return (char*)str1;
        while(len1 >= len2){
            len1--;
            if(!strcmp(str1,str2,len2)) return (char*)str1;
            str1++;
            }
        }
        return NULL;
    }
    
    int main(){
        char ori[]="sdggdfhhttyusdfge";
        char des[]="ttyu";
        char* ret=mystrstr(ori,des);
        printf("%s
    ", ret);
        return 0;
    }

    结果是

    [root@admin Desktop]# ./a.out
    ttyusdfge

  • 相关阅读:
    什么是web框架
    编写CGI程序步骤
    web开发 c/s结构 和 b/s结构
    python自带的web服务器
    自制计算器
    条件判断
    模版继承
    参数传递
    异常处理
    【uoj#244】[UER #7]短路 CDQ分治+斜率优化dp
  • 原文地址:https://www.cnblogs.com/McQueen1987/p/3940526.html
Copyright © 2011-2022 走看看