69,369
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <string.h>
#define M 100
int main(void)
{
char a[M],b[M],buf[M];
char *p=NULL,*q=NULL;
int k=0,m,n;
gets(a),gets(b);
m=strlen(a),n=strlen(b);
for(int i=0;i<m;i++)
{
p=strstr(a,b);//获取b的位置等同于存在一个字符串b
if(p)
{
k++;
q=p+n;//截取字符之后索引应到达的位置
strcpy(a,q);//将源字符串缩进到比较完毕之后的位置
a[strlen(a)]='\0';
q=NULL;//清空索引
p=NULL;
}
else
break;//搜索不到直接退出
}
printf("a got %d b\n",k);
return 0;
}
for(prev=ptr;*prev==*p;prev++,p++) //寻找第一个相等的位置,然后从此位置开始匹配子串
{
if(*(p+1)==0||*(p+1)==10) //如果已经到了子串的末尾
{
n++; //自增
p=s; //重新指向子串
break;//退出
}
}
这个我感觉有点问题啊,当判断之间某一个不匹配的话,不执行循环体,但是位置还是向后移,如果此时字串已经到了最后一个位置,那怎么判断???而为什么不是字串的头指针向后移动????if(ptr2-ptr<len) //如果一开始子串就大于src,则退出
break;
不是等于目标串的长度吗?
如果是检验子串的话,为什么用目标串的头指针和尾指针相减,而没有字串的事情?