博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于Visual C++2013拆解世界五百强面试题--题5-自己实现strstr
阅读量:4094 次
发布时间:2019-05-25

本文共 854 字,大约阅读时间需要 2 分钟。

http://blog.csdn.net/itcastcpp/article/details/12907371

请用C语言实现字符串的查找函数strstr, 找到则返回子字符串的地址,没有找到返回为空,请用数组操作与指针操作实现

看到题目想到最简单的方法就是母字符串和子字符串比较,如果不同,将指向母字符串的指针向前移动,继续查找,

下面我们分别用数组操作实现,大家可以很容易改成指针操作实现,

国际惯例,参考前面文章新建一个vs2013的工程,经过前面的学习大家已经对开发环境很熟悉了,下面我们直接上代码:

[cpp] 
 
  1. #include <stdio.h>  
  2. #include <stdlib.h>  
  3. #include <string.h>  
  4.   
  5.   
  6. char *mystrstr(char *Str, const char *SubStr)  
  7. {  
  8.     int StrLen, SubStrLen;  
  9.     StrLen = strlen(Str);  
  10.     SubStrLen = strlen(SubStr);  
  11.   
  12.   
  13.     //Str长度小于SubStrLen时直接跳过For返回空,  
  14.     //如果Str长度大于等于SubStr则依次递进比较  
  15.     for (int i = 0; i <= StrLen - SubStrLen; i++)  
  16.     {  
  17.         int j;  
  18.         for (j = 0; j < SubStrLen; j++)  
  19.         {  
  20.             if (Str[i + j] != SubStr[j])    //如果不等就跳出循环  
  21.                 break;  
  22.         }  
  23.         if (j == SubStrLen)         //如果j == SubStrLen则找到匹配的子串  
  24.             return &Str[i];  
  25.     }  
  26.   
  27.   
  28.     return NULL;  
  29. }  
  30.   
  31.   
  32. int main()  
  33. {  
  34.     printf("%s  \n", mystrstr("testxx123""xx12"));  
  35.     return 0;  
  36. }  


运行效果如下图:

如果有什么问题和疑问可以在下面留言互相探讨。

原题我已经上传到这里了 ,

解压密码为 c.itcast.cn

你可能感兴趣的文章
管理用户状态——Cookie与Session
查看>>
最受欢迎的前端框架Bootstrap 入门
查看>>
JavaScript编程简介:DOM、AJAX与Chrome调试器
查看>>
通过Maven管理项目依赖
查看>>
通过Spring Boot三分钟创建Spring Web项目
查看>>
Spring的IoC(依赖注入)原理
查看>>
Guava快速入门
查看>>
Java编程基础:static的用法
查看>>
Java编程基础:抽象类和接口
查看>>
Java编程基础:异常处理
查看>>
Java编程基础:了解面向对象
查看>>
新一代Java模板引擎Thymeleaf
查看>>
Spring MVC中使用Thymeleaf模板引擎
查看>>
Spring Boot构建简单的微博应用
查看>>
Spring处理表单提交
查看>>
Spring MVC异常处理
查看>>
Leetcode 1180. Count Substrings with Only One Distinct Letter [Python]
查看>>
PHP 7 的五大新特性
查看>>
php使用 memcache 来存储 session
查看>>
php实现socket(转)
查看>>