用C++编程,从一个字符串中查找子字符串,找到返回true,否则返回false。 请问哪里有问题?

#include"stdafx.h"boolstrfind(constchar*pStr,constchar*pFind){while(pStr!='\0'){if(pS... #include "stdafx.h"

bool strfind(const char* pStr , const char* pFind)
{
while(pStr != '\0')
{
if(pStr == pFind)
{
while(pStr++ == pFind++ && pStr != '\0' && pFind != '\0')
{

return true;

}

}
pStr++;
}
return false;
}

int _tmain(int argc, _TCHAR* argv[])
{
char* pStr1 = "abcdefasdoooggg";
char* pFind1 = "asd";
strfind(pStr1 , pFind1);
return 0;
}
展开
 我来答
百度网友2018359
推荐于2016-07-17 · TA获得超过3494个赞
知道大有可为答主
回答量:3486
采纳率:73%
帮助的人:1398万
展开全部

主串与子串下标位置可能并不同,例如:主串的下标在5时,子串的下标才是0,主串从5开始,子串从0开始比较子串长度的字符。

       char s[50]={"\0"};
char z[50]={"\0"};
scanf("%s %s",s,z);
int i,j,s_len,z_len;
int flag=0;
s_len=strlen(s);
z_len=strlen(z);
for(i=0;i<=s_len-z_len;i++)
{
if(s[i]==z[0])
{
flag=1;
for(j=1;j<z_len;j++)
{
if(s[i+j]==z[j])
{
flag=1;
}
else
{
flag=0;
}
}
if(flag==1)
{
printf("\nyes");
break;
}
}
}
if(flag==0)
{
printf("\nno");
}
//或者不考虑资源消耗问题,直接用子串第一个字符去对比主串的每个字符,如果为真则按顺序比较后面的字符,这样代码要写得少一些。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式