请问这道C语言题目错在哪

函数FUN的功能是,从S所指定的字符串中,找出子串T的个数作为函数的返回值。例如当S所指定的字符串内容是“ABCDABFABb“,T所指定的字符串的内容为”AB"时,函数... 函数FUN的功能是,从S所指定的字符串中,找出子串T的个数作为函数的返回值。例如当S所指定的字符串内容是“ABCDABFABb“,T所指定的字符串的内容为”AB"时,函数的返回值为3.
请改正函数FUN中的错误,使它能得出正确的结果。
注意:不要改动MAIN函数,不得增行或删行,也不得更改程序结构。

#include <conio.h>
#include <stdio.h>
#include <string.h>
int fun (char *s,char *t)
{
int n;char *p,*r;
n=0;
while (*s)
{p=s;r=t;
while (*r)
if(*r==*p) {r++;p++}
else break;
if(r=='\0') n++;
s++;
}
return n;
}
main()
{char s[100],t[100]; int m;
clrscr();
printf ("\nPlease enter string S:"); scanf ("%s",s);
printf ("\nPlease enter string t:"); scanf ("%s",t);
m=fun(s,t);
printf ("\nThe result is m: m=%d \n",m);
}
我不太明白 *r和*p 这都应该只能一个一个比,比如A和B比 怎么能AB和CD这样两个两个比呢
展开
 我来答
百度网友906779cfc
2012-10-23 · TA获得超过522个赞
知道小有建树答主
回答量:363
采纳率:0%
帮助的人:433万
展开全部
你一定要说错的话,好像
if(*r==*p) {r++;p++}的p++后面应该有个分号,逻辑应该没什么错吧

你的补充,是一个一个比的,但是不是你说的那样比,比如要看是不是ab,是先比较a,如果结果是a,再比较a后面的是不是b,如果是b则一样,如果不是b则不一样,所以t多长都是可以的
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
White_MouseYBZ
2012-10-23 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6468万
展开全部
int fun (char *s,char *t)中有两个错误:
1.if(*r==*p) {r++;p++}中p++后要加一个分号';'。
2.if(r=='\0') n++中的r前就当加一个'*'号。
另:main()中最后应有个return 0;。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友017eb58db
2012-10-23 · 超过29用户采纳过TA的回答
知道答主
回答量:85
采纳率:0%
帮助的人:73.3万
展开全部
写的有些乱啊
错误有2处:
第一个:
if(*r==*p) {r++;p++} 改为 if(*r==*p) {r++;p++;}少了个分号;
第二个:
if(r=='\0') n++; 改为 if(*r=='\0') n++; r前要加*号;
这样就OK啦~
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
不知怎么办才好
2012-10-23 · 超过59用户采纳过TA的回答
知道小有建树答主
回答量:157
采纳率:0%
帮助的人:112万
展开全部
出了p++ 后面没有“;”以外。
还有 你的判断语句r=='\0' 出错了 。 当r结束时 最后面的是*r==‘\0' 不是指针等于结束符而是指针指向的内容等于结束符。
r和p 一个一个比较完后在从下一个字符在比较例如 aaab 中找aa 就会找两个
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式