指定位置输出字串问题中,出现的结果输出问题

img


为什么样例2没过

img

这是题目想要的输出

img

这是我的输出

img

请大家帮忙改正一下,我感觉两者没什么区别,谢谢!

代码如下

char *match( char *s, char ch1, char ch2 ){
    char *p,*q=NULL,*c1;
    while(*s!='\0'){
        if(*s==ch1){
            p=s;
            while(*s!='\0'){
                if(*s==ch2){
                    q=s;
                    break;
                }
                s++;
            }
            if(*s=='\0'){
                c1=p;
                printf("%s\n",p);
                return c1;
            }else{
                break;
            }
        }
        s++;
    }
    if(*s=='\0'){//这是处理样例2时的代码;
        printf("%s\n",NULL);
        return NULL;
    }
    c1=p;
    for(;p<=q;p++){
        printf("%c",*p);
    }
    printf("\n");
    return c1;
}

修改如下,改动处见注释,供参考:

char *match( char *s, char ch1, char ch2 ){
    char *p=NULL,*q=NULL,*c1 = NULL;   // 修改
    while(*s!='\0'){                   // 修改
        if(*s == ch1){
            p = s;
            break;
        }
        s++;
    }
    while(*s!='\0'){                  // 修改
        if(*s == ch2){
            q = s;
            break;
        }
        s++;
    }
    //        if(*s=='\0'){         // 修改
    //            c1=p;
    //            printf("%s\n",p);
    //            return c1;
    //        }else{
    //            break;
    //        }
    //      }

    //   }
    //  if(*s=='\0'){//这是处理样例2时的代码;
    //    printf("%s\n",NULL);
    //    return NULL;
    //  }
    if (!p)           // 修改
        c1 = s;
    else if (!q){     // 修改
        printf("%s", p);
        c1 = p;
    }
    else{            // 修改
        for(c1 = p; p <= q; p++)
            printf("%c",*p);
    }
    printf("\n");
    return c1;
}