请大家帮忙看看这倒C语言题,while ( *r ) while ( *s) 都是什么意思啊

下列给定程序中函数fun的功能是:求出在字符串中最后一次出现的子字符串的地址,通过函数值返回,在主函数中输出从此地址开始的字符串;若未找到,则函数值为NULL。例如:当字符串中的内容为abcdabfabcdx,t中的内容为ab时,输出结果应是:abcdx。当字符串中的内容为abcdabfabcdx,t中的内容为abd时,则程序输出未找到信息:not be found!。
#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 ;
}
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" );
}

其实就是问strstr是怎么实现的嘛
int strlen(const char *src)
{
int i=0;
while(*src!='\0')
{
i++;
src++;
}
return i;
}

int strcnmp(char *str, char *src,int n)
{
while((*src==*str) && n )
{
if(*src=='\0' || *str=='\0')
break;
n--;
src++;
str++;
}
return *src-*str;
}

char *strstr(const char *src, char *str)
{
int str_len=strlen(str);
int src_len=strlen(src);
if(str_len>src_len)
return NULL;
int i=0;
do
{
if(strncmp(src+i,str,str_len)==0)
break;
i++;
}while(i<=src_len-str_len);
if(i<=src_len-str_len)
return src+i;
else
return NULL;
}

while(*s) 是判断 s指向的字符是不是0 也就是字符'\0'
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-02-13
while ( *r )
既r当前指向的字符不是 结束符追问

恕我冒昧,那什么是结束符呢?

追答

字符串都是以 '\0' 结束符结束的

第2个回答  2012-02-15
百度知道其实还可以该进,要是能在题目上添加编辑修改器,可以打开或者收起,这样不就可以在原题上改了吗?多方便啊!百度管理员你觉得呢?

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网