zoukankan      html  css  js  c++  java
  • c语言,string库函数strstr实现

    说明:
    原型:char *strstr(char *haystack, char *needle);

    用法:#include <string.h>

    功能:从字符串haystack中寻找needle第一次出现的位置(不比较结束符NULL)。

    说明:返回指向第一次出现needle位置的指针,如果没找到则返回NULL。

    函数myStrstr是我自己写的;
    函数standardStrstr是标准函数,可对比参考;
    #include<stdlib.h>
    #include<stdio.h>
    #include<assert.h>
    
    char* myStrstr(char srce[],char check[]){
            assert(NULL != srce && NULL != check);
            char *sr,*ch,*ret;
            sr=srce;
            ch=check;
            while(*sr != '')
            {
                    while(*sr && *sr != *ch) sr++;
                    ret=sr;
                    while(*sr && *ch && *sr == *ch)
                    {
                            ch++;sr++;
                    }
                    if(*ch == '') return ret;
                    if(*sr == '') return NULL;
                    ch=check;
            }
            return NULL;
    }
    
    char* standardStrstr(const char *src,const char *dest){
            assert(src!=NULL && dest!=NULL);
            if(!*dest) return src;
            while(*src){
                    int i=0;
                    for(;*(src+i)==*(dest+i);i++){
                            if(!*(dest+i+1)) return src;
                    }
                    src++;
            }
            return NULL;
    }
    
    int main(){
            char sr[]={'a','b','c',''};
            char ch[]={'b',''};
            char *sr1="how are you baby";
            char *ch1="";
            char *ret= myStrstr(sr,ch);
            char *ret1= standardStrstr(sr1,ch1);
            if(NULL != ret){//如果打印null会返回段错误
                    printf("result is:%c
    ",*ret);
                    printf("result1 is:%c
    ",*ret1);
            }
            return -1;
    }
          
  • 相关阅读:
    10-10-12分页机制(xp)
    段间跳转之任务门
    段间跳转之TSS段
    mysql索引
    cat /proc/meminfo
    This system is not registered to Red Hat Subscription Management报错
    CentOS 6.5安装zabbix
    KVM(系统虚拟化模块)安装
    Linux时区更改
    学习ruby/rails, rvm是必不可少的工具之一
  • 原文地址:https://www.cnblogs.com/McQueen1987/p/3549849.html
Copyright © 2011-2022 走看看