用c语言实现。 输入两个字符串string1,string2,检查string1中是否有包含string2。

如果有,则输出在string1中出现的次数及每次出现的起始位置。如没有则输出NO。例:string1="thedaythemonth";sting2="the";结果为:... 如果有,则输出在string1中出现的次数及每次出现的起始位置。如没有则输出NO。例:
string1="the day the month";
sting2="the";
结果为:出现3次,起始位置分别是:0,8.
又如string1="aaabacad"
string2="a"
结果为:出现5次,起始位置分别是0,1,2,4,6
展开
 我来答
甫哲妍5r
2012-01-27 · TA获得超过192个赞
知道小有建树答主
回答量:174
采纳率:0%
帮助的人:157万
展开全部
给你一个类似的参考代码 核心函数就是一个strstr();
#include <stdio.h>
int main()
{
char x[200];
char * p = NULL;
char * pp = NULL;
int a = 0;
int n;
printf("输入个字符串:");
scanf("%s",x);
p=x;
while (1)
{
pp = NULL;
pp = strstr(p,"r");
if (pp)
{

if(strlen(x)>(pp-x))
{
pp++;
}
p = pp ;
a++;
}
else
{
printf("字符串中一共有%d个r",a);
break;
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
晓风残月hero
2012-01-27 · 超过22用户采纳过TA的回答
知道答主
回答量:188
采纳率:0%
帮助的人:76.1万
展开全部
#include <stdio.h>
#include <string.h>

int count_str(char *A,char *B)
{
int count=0;
char *q=A;
printf("出现的位置: ");
while(q=strstr(q,B))
{
printf("%d ",q-A);
q++;
count++;
}
printf("\n出现次数%d\n",count);
}

int main()
{
char A[]="abcabeab",B[]="ab";

count_str(A,B);

return 0;
}
一定要采纳呀!
追问
while 循环中  printf("%d ",q-A); q-A怎么理解?为啥不是A-q???
请回答,谢谢
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式