strstr函数[转]

strstr
编辑
从字符串str1中查找是否有字符串str2,如果有,从str1中的str2位置起,返回str1中str2起始位置的指针,如果没有,返回null。

目录

1函数概述

2函数实现

3应用举例

1函数概述

1
2
3
char str[]="1234 xyz";
char* str1=strstr(str,"34");
cout<<str1<<endl;

显示: 34 xyz

2函数实现

1
2
3
4
5
6
7
8
9
10
11
12
char *strstr( const char *s1, const char *s2 )
{
 int len2;
 if ( !(len2 = strlen(s2)) )//此种情况下s2不能指向空,否则strlen无法测出长度,这条语句错误
 return (char *)s1;
 for ( ; *s1; ++s1 )
 {
    if ( *s1 == *s2 && strncmp( s1, s2, len2 )==0 )
   return (char *)s1;
 }
 return NULL;
}

2.Copyright 1986 - 1999 IAR Systems. All rights reserved
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
char *strstr(const char *s1, const char *s2)
{
 int n;
 if (*s2)
 {
   while (*s1)
   {
     for (n=0; *(s1 + n) == *(s2 + n); n++)
     {
       if (!*(s2 + n + 1))
         return (char *)s1;
     }
     s1++;
   }
    return NULL;
 }
 else
   return (char *)s1;
}

3. GCC-4.8.0
1
2
3
4
5
6
7
8
9
10
11
12
char *
 strstr (const char *s1, const char *s2)
 {
   const char *p = s1;
     const size_t len = strlen (s2);
   for (; (p = strchr (p, *s2)) != 0; p++)
   {
     if (strncmp (p, s2, len) == 0)
     return (char *)p;
    }
      return (0);
 }


  

3应用举例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <syslib.h>
#include <string.h>
main()
{
  char *s="Golden Global View";
  char *l="lob";
  char *p;
  clrscr();
  p=strstr(s,l);
  if(p)
    printf("%s",p);
  else
    printf("Not Found!");
  getchar();
  return 0;
}

语法:* strstr(str1,str2)
str1: 被查找目标 string expression to search.
str2:要查找对象 The string expression to find.
该函数返回str2第一次在str1中的位置,如果没有找到,返回NULL
The strstr() function returns the ordinal position within str1 of the first occurrence of str2. If str2 is not found in str1, strstr() returns 0.
例子:
功能:从字串” string1 onexxx string2 oneyyy”中寻找”yyy”
(假设xxx和yyy都是一个未知的字串)
1
2
3
4
5
char *s=” string1 onexxx string2 oneyyy”;
char *p;
p=strstr(s,”yyy”);
if(p==NULL) printf(“%s”,p);
else printf("not found\n");

说明:如果直接写语句p=strstr(s,”one”),则找到的是onexxx string2 oneyyy,不符合要求所以需采用二次查找法找到目标实现
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
char *mystrstr(char *s1 , char *s2)
{
  if(*s1==0)
  {
    if(*s2) return(char*)NULL;
    return (char*)s1;
  }
  while(*s1)
  {
    int i=0;
    while(1)
    {
      if(s2[i]==0) return s1;
      if(s2[i]!=s1[i]) break;
      i++;
    }
    s1++;
  }
  return (char*)NULL;
}

posted @ 2013-12-20 16:00 心灵捕手 阅读(...) 评论(...)  编辑 收藏

strstr函数[转]相关推荐

  1. strchr strstr函数php,PHP字符串函数之 strstr stristr strchr strrchr

    strstr -- 查找字符串的首次出现,返回字符串从第一次出现的位置开始到该字符串的结尾或开始. stristr -- strstr 函数的忽略大小写版本 strchr -- strstr 函数的别 ...

  2. strstr函数头文件_C语言(函数)学习之strstr strcasestr

    一.strstr函数使用 [1] 函数原型 char *strstr(const char *haystack, const char *needle); [2] 头文件 #include [3] 函 ...

  3. 算法----实现strStr 函数

    题目 实现 strStr() 函数. 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始).如果不存在 ...

  4. C语言strstr()函数(在主字符串里查找子字符串,返回第一次找到的子字符串以及后面的字符串)

    需包含头文件:C 标准库 - <string.h> 文章目录 描述 声明 参数 返回值 实例 描述 C 库函数 char *strstr(const char *haystack, con ...

  5. strstr函数_【每日编程176期】实现strStr() II

    每日编程中遇到任何疑问.意见.建议请公众号留言或直接撩Q474356284(备注每日编程) 今日问题: 实现 strStr() 函数. 给定一个 haystack 字符串和一个 needle 字符串, ...

  6. mysql strstr_实现 strStr() 函数-算法刷题

    算法题目 实现 strStr() 函数: 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的 第一个位置 (从0开始).如果 ...

  7. strstr函数_[LeetCode] 28. 实现strStr()

    题目链接: https://leetcode-cn.com/problems/implement-strstr/ 题目描述 实现 strStr() 函数. 给定一个 haystack 字符串和一个 n ...

  8. C语言之strstr函数类似Java字符串的contain函数

    1.strstr函数介绍 找出haystack字符串在needle字符串中第一次出现的位置(不包括needle的串结束符).返回该位置的指针,如找不到,返回空指针. 2.举例 3.运行结果

  9. php 字符串函数 教程_PHP 字符串获取 substr 与 strstr 函数

    PHP 字符串获取 用于从字符串中获取指定字符串. 相关函数如下: substr():从字符串中获取其中的一部分 strstr():查找字符串在另一个字符串中第一次出现的位置,并返回从该位置到字符串结 ...

  10. strchr与strstr函数

    在C语言中 strchr 和 strstr函数都被包含在<string.h>头文件中,也就是要调用它们时要在程序前面包含<string.h>头文件,也就是写这个语句:#incl ...

最新文章

  1. Django 第三方引用富文本编辑器6.1
  2. spring cloud的网关服务Zuul
  3. IplImage简介
  4. [转载]抓大放小,要事为先
  5. linux程序ctrl c无法退出原因_「Linux」20节-在后台运行任务
  6. Protobuf实现Android Socket通讯开发教程
  7. 2018/12/04 PAT刷题 L1-008 求整数段和 java
  8. 安装LoadRunner时提示缺少vc2005_sp1_with_atl_fix_redist解决方案
  9. mac地址厂商查询_3.15干货你的手机mac地址泄漏了吗
  10. 【Unity3D】游戏配表Excel转Txt,并且打成ab包
  11. leapftp 3.0.1使用教程,leapftp 3.0.1使用教程图解
  12. 毕业设计周报(第六周)
  13. 9.10教师节 Best wishes to teachers
  14. iphone 中的大小和像素问题
  15. NUIST第十一届程序设计竞赛
  16. big_screen,一款超强大的Python 可视化大屏!
  17. FileZilla Server 配置
  18. CSDN个性化推荐 - 测试和建议
  19. iframe 边框去除,使用大全
  20. 什么是硬件以及什么是软件

热门文章

  1. 来自一位程序员的经验之谈(三)
  2. jQuery UI Datepicker日期日历改造为年月日历
  3. 【r语言plot报错】Error in plot.window(...) : ‘xlim‘值不能是无限的/ need finite ‘xlim’ values
  4. 爬虫第八式:破解百度翻译案例(特别详细) - JS逆向
  5. Currency Translation in Bex Query Variable 2
  6. pytorch PixelShuffle和Upscale函数
  7. ng-repeat指令的使用
  8. Carbon教程之 基本语法入门大全 (教程)
  9. web前端大作业--响应式风景旅游网页设计(国庆旅游主题-HTML+CSS+JavaScript)实现
  10. 毕业季基于spring的基于安卓APP的基于ssm框架的基于微信小程序的管理系统设计与开发(开题+源码+讲解+论文)