求助C语言!!.编写一个函数strindex(s,t)它返回字符串t在s中最右边出现的位置
例如字符串“ab”在字符串“abcdefabed”中左右边出现的位置应该是7我编写的程序如下#include<stdio.h>intstrindex(chara[],ch...
例如字符串“ab”在字符串“abcdefabed”中左右边出现的位置应该是7
我编写的程序如下
#include<stdio.h>
int strindex(char a[],char b [])
{
char *p=a,*q=b;
int i=0,j=0;
while (*p!='\0')
{p++;i++;}
p--;//后退一步,从终止符号回到最右边的元素
while(*p!=*q)
{
p--;
j++;
if(p<0)
{
return(-1);
break;
}
}
return(i-j);
}
void main()
{
char a[100],b[100];
printf("请输入字符串s:\n");
gets(a);
printf("请输入字符串t:\n");
gets(b);
int s=strindex(a,b);
if(s<=-1)
printf("sorry,字符串\"%s\"中未找到字符串\"%s\"\n",a,b);
else
printf("字符串\"%s\"在字符串\"%s\"中最右边出现的位置应该是:%d\n",b,a,s);
}
可在输入aabbccaaddcc和cc作比较时就会算错,我知道问题是出在指针上面了,*p与*q的比较只限数组的首元素,但是要怎么改啊?? 展开
我编写的程序如下
#include<stdio.h>
int strindex(char a[],char b [])
{
char *p=a,*q=b;
int i=0,j=0;
while (*p!='\0')
{p++;i++;}
p--;//后退一步,从终止符号回到最右边的元素
while(*p!=*q)
{
p--;
j++;
if(p<0)
{
return(-1);
break;
}
}
return(i-j);
}
void main()
{
char a[100],b[100];
printf("请输入字符串s:\n");
gets(a);
printf("请输入字符串t:\n");
gets(b);
int s=strindex(a,b);
if(s<=-1)
printf("sorry,字符串\"%s\"中未找到字符串\"%s\"\n",a,b);
else
printf("字符串\"%s\"在字符串\"%s\"中最右边出现的位置应该是:%d\n",b,a,s);
}
可在输入aabbccaaddcc和cc作比较时就会算错,我知道问题是出在指针上面了,*p与*q的比较只限数组的首元素,但是要怎么改啊?? 展开
展开全部
int strindex(char a[],char b [])
{
char *p=a,*q=b,*t;
int i=0,j=0,len=0;
while (*p!='\0')
{p++;i++;}
while (*q!='\0')
{q++;len++;}
p=a+i-len;//将p定位到最后一个长度为len的子串位置
while(p>=a)
{
t=p;
j=0;
q=b;
while(*t==*q)
{
if(++j>=len)
return (int)(p-a)+1;
t++;
q++;
}
}
return -1;
}
{
char *p=a,*q=b,*t;
int i=0,j=0,len=0;
while (*p!='\0')
{p++;i++;}
while (*q!='\0')
{q++;len++;}
p=a+i-len;//将p定位到最后一个长度为len的子串位置
while(p>=a)
{
t=p;
j=0;
q=b;
while(*t==*q)
{
if(++j>=len)
return (int)(p-a)+1;
t++;
q++;
}
}
return -1;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询