问答题 给定程序MODI1.C中函数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; /************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 ; } 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" ); }
【正确答案】第一处:指向空指针错误,Null应NULL。 第二处:比较指针位置的值是否相等,所以应改为:if(*r==*p)。
【答案解析】