m0_74079850 2022-11-27 20:16 采纳率: 96.3%
浏览 66
已结题

指定位置输出字符串(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)以及它后面的那部分的意思吗?有点看不懂(有注释的那部分也不太理解)
谢谢!

  • 写回答

3条回答 默认 最新

  • CSDN专家-link 2022-11-27 20:30
    关注

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

    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,所以返回的地址是字符串结束符的地址,就是字符串起始地址加上字符串长度。
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 12月6日
  • 已采纳回答 11月28日
  • 创建了问题 11月27日