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

学C第11天(strstr函数实现)

时间:2015-04-02 22:25:28      阅读:255      评论:0      收藏:0      [点我收藏+]

标签:

1.strstr函数说明

strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。找到所搜索的字符串,则该函数返回第一次匹配的字符串的地址;如果未找到所搜索的字符串,则返回NULL

2.strstr函数运用

#include <stdio.h>
#include<stdlib.h>
#include<string.h>
void main()
{
    char str1[9] = "tasklist";
    char str2[5]="list";
    char *p = strstr(str1, str2);
    if (p)
    {
        puts("包含");
    }
    else
    {
        puts("不包含");
    }
    system("pause");
}

3.思路

技术分享

4.下标实现

#include <stdio.h>
#include<stdlib.h>
#include<string.h>
char *mystrstr(char *str1,char *str2)
{
    char*p = NULL;
    int lenstr1 = strlen(str1);//str1的长度
    int lenstr2 = strlen(str2);//str2的长度
if(lenstr1<lenstr2)return p;
//lenstr1-lenstr2表示当str1剩余的字符个数<str2的个数时,str1会越界 for (int i = 0; i <=lenstr1-lenstr2; i++) { int find = 1;//标识找到与否 for (int j = 0; j < lenstr2; j++) { //为何是i+j?因为str1和str2都同步移动 if (str1[i + j] != str2[j]) { find = 0; break;//跳出内部for循环 } } if (find==1) { p = &str1[i];//将首次str2出现的地址返回 break;//说明已找到 } } return p; } void main() { char str1[9] = "tasklist"; char str2[5]="list"; char *p = mystrstr(str1, str2); if (p!=NULL) { puts("包含"); printf("%c", *p); } else { puts("不包含"); } system("pause"); }

5.指针实现

#include <stdio.h>
#include<stdlib.h>
#include<string.h>
char *mystrstr(char *str1, char*str2)
{
    char *p = NULL;
    if (strlen(str1) < strlen(str2))return p;
    for (char* pstr1 = str1; *pstr1 !=\0; pstr1++)
    {
        int find = 1;
        for (char* pstr2 = str2; *pstr2 !=\0; pstr2++)
        {
            //防止越界
            if (*(pstr1 + (pstr2 - str2)) == \0)
            {
                find = 0;
                break;
            }
            if (*(pstr1 + (pstr2 - str2)) != *pstr2)
            {
                find = 0;
                break;
            }
        }
        if (find==1)
        {
            p = pstr1;
            break;
        }
    }
    return p;

}
void main()
{
    char *str1 = "tasklist";
    char *str2 = "list";
    char *p = mystrstr(str1, str2);
    if (p!=NULL)
    {
        puts("包含");
        printf("%c", *p);
    }
    else
    {
        puts("不包含");
    }
    system("pause");
}

 

学C第11天(strstr函数实现)

标签:

原文地址:http://www.cnblogs.com/ginb/p/4388300.html

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