c语言函数要求返回字符串t最后一次出现的地址 20

例如“abcdabfabcdx”t为"ab"输出“abcdx"#include<stdio.h>char*fun(char*s,char*t){char*p,*r,*a;... 例如 “abcdabfabcdx”t为"ab"输出“abcdx"
#include<stdio.h>
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++;}
else break;
if(*r=='\0') a=s;
s++;}
return a;
}
main()
{
char s[100]="abcdabfabcdx",t[100]="ab",*p;
p=fun(s,t);
if(p)
printf("%s",p);
else
printf("not found");
}
fun函数里while循环内是怎样实现那功能的 看不太懂
展开
 我来答
hnlN7879
2017-03-28 · TA获得超过274个赞
知道答主
回答量:372
采纳率:33%
帮助的人:69.6万
展开全部
C语言中实现函数返回字符串,首先要确定函数返回的字符串地址的来源,一般分为四种方式: 函数形参带进来的地址 静态局部变量地址 局部变量地址,必须在函数中用malloc()函数进行地址分配 采用全局变量地址 参考代码: void  func一( char *s )  //通过形参返回字符串 {     strcpy( s, "hello"); } char * func一_一( char *s ) //另一种写法 {     strcpy( s, "hello");     return s ; //返回形参地址,方便程序调用 } char * func二( void )  {     static char s[一00]; //不能是非静态变量,否则,子函数结束,局部变量被释放,调用者得到一个无效的地址值。     strcpy( s, "hello");     return s ; //返回静态局部变量地址,由调用者采用相应的指针变量接收返回值,得到字符串数据。 } char * func三( void ) {     char *s ;     s=(char *)malloc( 一00 );     strcpy( s, "hello");     return s ; //返回s值,该地址需要调用者去free()释放。 } //定义全局变量 char globle_buf[一00]; void func四( void ) {     strcpy( globle_buf, "hello"); } char * func四_一( char *s ) //另一种写法 {     strcpy( globle_buf, "hello");     return globle_buf ; //返回全局变量地址,方便程序调用
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式