C高人 给讲下这段代码

来源:百度知道 编辑:UC知道 时间:2024/05/13 05:24:37
#include <stdio.h>

char *fun ( char *s, char *t)
{
char *ss=s, *tt=t;
while((*ss)&&(*tt)) ----》何解?
{ ss++; tt++; } ---》何解?
if(*tt) return(t); ---》何解?
else return(s);
}

main( )
{ char a[20],b[10],*p,*q;
int i;
printf("Input 1th string:") ;
gets( a);
printf("Input 2th string:") ;
gets( b);
printf("%s\n",fun (a, b ));
}

以上,高人给讲讲 ......

while((*ss)&&(*tt))

*ss相当于ss[0],意思是取出这个字符指针指向的字符
*tt同理

这个WHILE的意思是当ss和tt指向的字符不是'\0'时(也就是字符串没有结束)重复执行循环体

ss++,使ss指向字符串中的下一个字符
tt++同理

if(*tt) return(t);
else return(s);

如果循环结束,那么说明ss和tt至少有一个已经指向了字符串结束标志'\0',此时就要返回没有结束的那个字符串的地址。

这个函数的作用是找出传入的字符串中的较长者,并返回较长者的地址。

while句检查字符串有没有结束,就是判断*ss是否为'\0', *tt是否为'\0'
ss++; tt++句,移动指针到后一地址.
if句判断t串有没有结束,若不结束返回串t
else否则返回s.
函数的作用就是把两个串中长度较长的返回