考了一下C语言,尽管考得比较简单,但自己还是暴露出一些问题。如将字符串结尾'/0'等同于了NULL。太不应该了。最后两道编程题,一题考strcmp,一题考strindex。应该说自己思路基本是对的,就是关键位置让自己失利了。
自己下来重新把这两体总结了一下。strcmp的函数重新整理如下:就当作一个积累吧。
int
strcmp(
const
char
*
psrc ,
const
char
*
pdest)
... {
while(*pdest != '/0')
...{
if (*psrc > *pdest)
return 1;
if (*psrc < *pdest)
return -1;
psrc++;
pdest++;
}
if (*psrc != '/0')
return 1;
return 0;
}
... {
while(*pdest != '/0')
...{
if (*psrc > *pdest)
return 1;
if (*psrc < *pdest)
return -1;
psrc++;
pdest++;
}
if (*psrc != '/0')
return 1;
return 0;
}
看了一下网上经典示例,如下:
int
streql(
char
*
str1,
char
*
str2)
... {
while((*str1==*str2)&&(*str1))
...{
str1++;
str2++;
}
return((*str1==NULL)&&(*str2==NULL));
}
... {
while((*str1==*str2)&&(*str1))
...{
str1++;
str2++;
}
return((*str1==NULL)&&(*str2==NULL));
}
static
const
char
*
_strstr(
const
char
*
s1,
const
char
*
s2)
... {
assert(s2 && s1);
const char* p=s1, *r=s2;
while(*p!='/0')
...{
while(*p++==*r++);
if(*r=='/0')
return p;
else
...{
r=s2;
p=++s1;
}
}
return NULL;
}
... {
assert(s2 && s1);
const char* p=s1, *r=s2;
while(*p!='/0')
...{
while(*p++==*r++);
if(*r=='/0')
return p;
else
...{
r=s2;
p=++s1;
}
}
return NULL;
}