ITjingxinbao 2022-11-17 14:45 采纳率: 80.8%
浏览 6
已结题

为什么我这个strstr函数没能得到想要的结果

问题遇到的现象和发生背景
#include <stdio.h>
char* mystrstr(char*p1,char*p2)
{
    char*s1=NULL;
    char*s2=NULL;
    char*cur=p1;
    if(*p2)
    {
        return p1;}
    while(*cur)
    {
        s1=cur;
        s2=p2;
        while((*s1!='\0')&&(*s2!='\0')&&(*s1==*s2))
        {
            s1++;
            s2++;}
        if(*p2)
        {
            return  cur;}
        cur++;
    
    }
    return NULL;}

int main()
{
    char *p1="abcdef";

    char *p2 ="bcd";
     char* ret=mystrstr(p1,p2); 
     if(ret==NULL)
         printf("z");
     else
     printf("%s\n",ret);
     return 0;
}

用代码块功能插入代码,请勿粘贴截图
我想要达到的结果


  • 写回答

4条回答 默认 最新

  • wwc2017 2022-11-17 16:33
    关注

    问题稍微有点多,我先大体说下问题

    1. 下面两处
    if(*p2)
        {
            return p1;}
    //...
    if(*p2)
            {
                return  cur;}
    

    这里显然是希望当p2指向空字符时返回。但是p2第一个字符不为空字符,直接就return了,建议改为

    if(*p2 == '\0')
    
    1. 指针指向的内容很混乱,建议先学习使用你写代码的软件的调试功能,打个断点进行单步调试,看看s1和s2具体指向什么字符
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 11月26日
  • 已采纳回答 11月18日
  • 创建了问题 11月17日

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?