4.请编写能直接实现strstr()函数功能的代码。
参考答案:
// 使用最简单的字符串匹配。可以改进为KMP匹配算法
int StrStr(char a[], int alen, char pat[], int patlen)
{
int i = 0;
int j = 0;
while (i < alen && j < patlen)
{
if (a[i] == pat[j])
{
++i;
++j;
}
else
{
i = i - j + 1;
j = 0;
}
}
if ( j >= patlen)
return (i - patlen + 1); //位置
else
return 0; //没有匹配
}
其它类似函数:(注意:都没有加错误判断!!!)
void StrCpy(char *dst, const char *src)
{
while (*dst++ = *src++)
;
}
int StrCmp(const char *s, const char *t)
{
for (; *s == *t; s++, t++)
if ( '\0' == *s)
return 0;
return (*s - *t);
}
完整代码见 程序员讨论组
Subscribe to:
Post Comments (Atom)

No comments:
Post a Comment