指定位置输出字符串(C语言)

本题要求实现一个函数,对给定的一个字符串和两个字符,打印出给定字符串中从与第一个字符匹配的位置开始到与第二个字符匹配的位置之间的所有字符。

函数接口定义:
char *match( char *s, char ch1, char ch2 );
函数match应打印s中从ch1到ch2之间的所有字符,并且返回ch1的地址。

裁判测试程序样例:

img

输出样例1:
rog
rogram
输入样例2:
program
z o
输出样例2:
(空行)
(空行)
输入样例3:
program
g z
输出样例3:
gram
gram
代码:

img

img


可以帮我讲一下return(s+i)以及它后面的那部分的意思吗?有点看不懂(有注释的那部分也不太理解)
谢谢!

只需要搜索两个字符所在的位置下标就可以了啊,题目中函数功能说明如下:

char *match(char *s,char ch1,char ch2)
{
    for(int i=0;i<strlen(s);i++)   //---遍历字符串
    {
        if(s[i] == ch1)            //搜索ch1字符,如果找到
        {
            for(int j=i;j<strlen(s);j++)   //在ch1值后继续向后搜索ch2
            {
                printf("%c",s[j]);  //ch1之后,ch2之前的字符都输出
                if(s[j] == ch2)  //如果找到ch2,则输出结束,跳出循环
                    break;
            }
            printf("\n");   //输出换行符
            return (s+i);  //s+i就是ch1所在的位置,按题目要求返回ch1所在的地址
        }
    }
    printf("\n");  //代码执行到这里,表示字符串中没有搜索到ch1,则没有输出任何字符,直接输出换行符
    return s+strlen(s);  //由于没有找到ch1,所以返回的地址是字符串结束符的地址,就是字符串起始地址加上字符串长度。
}

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632