码迷,mamicode.com
首页 > 其他好文 > 详细

字符串子串查找strstr

时间:2014-08-27 23:25:38      阅读:346      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   color   io   ar   问题   div   cti   

问题:

函数名: 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 != \0){
        if(*str1 != *str2) str1++;
        else{
            char* ori = str1;
            char* des = str2;
            while(*des != \0){
                if(*ori == *des){
                    ori++;des++;
                }
                else break;
            }
            if(*des == \0) return str1;
        }
    }
    return NULL;
}

int main(){
    char ori[]="sdggdfhhttyusdfge";
    char des[]="ttyu";
    char* ret=mystrstr(ori,des);
    printf("%s\n", 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\n", ret);
    return 0;
}

结果是

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

 

字符串子串查找strstr

标签:des   style   blog   color   io   ar   问题   div   cti   

原文地址:http://www.cnblogs.com/McQueen1987/p/3940526.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!