谁帮我解释下这道C语言题

[复制链接]
查看11 | 回复3 | 2008-8-12 12:07:02 | 显示全部楼层 |阅读模式
给定程序中,函数fun的功能是:求出s所指字符串中最后一次出现的t所指子字符串的地址,通过函数值返回,在主函数中输出从此地址开始的字符串;若未找到,则函数值为NULL。
例如,当字符串中的内容为“abcdabfabcdx”、t中的内容为“ab”时,输出结果应是abcdx。当字符串中的内容为“abcdabfabcdx”、t中的内容为“abd”时,则程序输出未找到信息not be found!。
请改正程序中的错误,使其能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include
#include
char *fun(char *s,char *t)
{
char *p,*r,*a;
a=Null;
while(*s)
{

p=s;r=t;

while(*r)

if(*r==*p)


{r++;p++;}

elsebreak;

if(*r=='\0')a=s;

s++;
}
returna ;
}
main()
{
char s[100],t[100],*p;
printf("\nPlease enter string S :");
scanf("%s",s);
printf("\nPlease enter substring t :");
scanf("%s",t);
p=fun(s,t);
if(p) printf("\nThe result is :%s\n",p);
else printf("\nNot found !\n");
}
解释下FUN函数的功能是如何实现的,"字符串中最后一次出现的t所指子字符串的地址".这句话怎么实现,总感觉BREAK用的不对,谁能解释下,谢谢
能具体解释下FUN函数吗,我不太明白,我想知道每步起什么作用

回复

使用道具 举报

千问 | 2008-8-12 12:07:02 | 显示全部楼层
错误就一个Null应该为大写的,那个scanf("%s",s); scanf("%s",t);里面的s和t本身代表就是地址所以前面不用加"&"号的,改了之后就可以运行了,我亲自用TC2.0试的.楼上的 把你的这句""楼下的.. s 和 t 是数组的指针啊 scanf("%s",s)是对的..."" 改一下吧最好改成名字.....
回复

使用道具 举报

千问 | 2008-8-12 12:07:02 | 显示全部楼层
目前有两个错误1.a=Null;应该改为 a=NULL, C语言区分大小写2.scanf("%s",s); scanf("%s",t); 这两句应该改为scanf("%s",&s); scanf("%s",&t);这个取地址符号不能忘,s和t是字符数组的首地址,可以看作代表整个数组。scanf中输入&s和&t就是存放s和t的地方改了后
回复

使用道具 举报

千问 | 2008-8-12 12:07:02 | 显示全部楼层
用的对不对 你自己把代码放到编译器编译一下楼下的..s 和 t 是数组的指针啊 scanf("%s",s)是对的...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行