本题要求实现一个函数,对给定的一个字符串和两个字符,打印出给定字符串中从与第一个字符匹配的位置开始到与第二个字符匹配的位置之间的所有字符。
函数接口定义:
char *match( char *s, char ch1, char ch2 );
函数match应打印s中从ch1到ch2之间的所有字符,并且返回ch1的地址。
裁判测试程序样例:
输入输出
c语言代码
char *match( char *s, char ch1, char ch2 )
{
char a[MAXS]="",*p;//a字符数组是打印的ch1和ch2之间的字符,*p指针是返回ch1的地址
int i=0,j=0;
while((*(s+i)!=ch1)&&(*(s+i)!=0))//从第一个元素找起到ch1或字符串停止符'\0'停止
{
i++;
}p=s+i;//p指针指向找到ch1或'\0'后s字符串后面的部分
a[j]=*(s+i);//将ch1或'\0'给到a数组第一个元素------①
j++;i++;
while((*(s+i)!=0)&&(*(s+i)!=ch2))//找ch2或'\0'停止,期间复制中间字符给a数组
{
a[j]=*(s+i);
j++;i++;
}//---------②
a[j]=*(s+i);//最后加上ch2或'\0'
printf("%s\n",a);
return p;
}
①—②实际是do while循环
灵活使用数组和指针,对相应字符串的表示方法、原理、结构需要一定的了解。