c++ 在一个字符串(主串)中查找另一个字符串(子串)第一次出现时的位置,在查找过程中忽略字符的大小写

#include<iostream>usingnamespacestd;intequal(chara,charb){if(a>='A'&&a<='Z')a+='a'-'A... #include<iostream>
using namespace std;
int equal(char a,char b)
{
if(a>='A'&&a<='Z') a+='a'-'A';
if(b>='A'&&b<='Z') b+='b'-'A';
return a==b;
}
char*substr(char*s,char*sub)
{
char *p,*q;
while(*s)
{
for(p=s,q=sub;*q&&equal(p,q);p++,q++);
if(*q=='\0') return s;
s++;
}
return 0;
}
int main()
{
char str[80]="This BOOK is a Very Good BOOK.",s2[20],*p;
cin>>s2;
if((p=substr(str,s2))!=0)
cout<<"找不到子串"<<endl;
else
cout<<"子串开始于第"<<p-str<<"个字符串处。\n";
return 0;
}
这是改错题,请问问题出在哪里?怎么改?拜托各位大侠了!
展开
 我来答
wuqing0312
2014-06-26 · TA获得超过311个赞
知道小有建树答主
回答量:220
采纳率:0%
帮助的人:225万
展开全部
1. if((p=substr(str,s2))!=0)条件写反了,应该为
   if((p=substr(str,s2))==0)
2. for(p=s,q=sub;*q&&equal(p,q);p++,q++);改为:
   for(p=s,q=sub;*q&&equal(*p,*q);p++,q++);
追问
还有其它的错误
追答
3.  if(b>='A'&&b='A'&&b<='Z') b+='a'-'A';
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式