下列给定程序中,函数fun的功能是:求出s所指字符串中最后一次出现的t所指字符串的地址,并通过函数值返回,在主函数中输出从此地址开始的字符串;若未找到,则函数值为NULL。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动mam函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include <stdio.h>
#include <string.h>
char *fun(char *s, char *t)
char*p,*r, *a;
/******************found*******************/
a=Null;
while(*s)
p=s; r=t;
while(*r)
/******************found*******************/
if(r==p)r++; p++;
else break;
if(*r==’\0’)a=s;
s++;
return a;
void 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");
参考答案:(1)a=NULL;
(2)if(*r==*p)
解析: (1)指针指向空值的关键字应为NULL。
(2)指针变量r和p指向两个字符串中的字符,r和p所指向的字符相同,则指针后移指向下一个字符,故应为if(*r==*p)。