四.String(串)
学完模式匹配,我想有没有一个KMP模式匹配库函数,结果只有一个strstr().
不是想象中的那样,有些失望。
4.1模式匹配-strstr库函数
(1)strstr库函数介绍
函数原型:extern char *strstr(char *str1, const char *str2);
//Copyright 1990 Software Development Systems, Inc.
char *strstr( const char *s1, const char *s2 )
{
int len2;
if ( !(len2 == strlen(s2)) )
return (char *)s1;
for ( ; *s1; ++s1 )
{
if ( *s1 == *s2 && strncmp( s1, s2, len2 )==0 )
return (char *)s1;
}
return NULL;
}
(2)模式匹配
# include <stdio.h>
# include <string.h>
void Init_string(char *s,char *p);
int Index_str(char *s,char *p);
void print(int i);
int main()
{
int i;
char s[50];
char p[50];
Init_string(s,p);
i = Index_str(s,p);
print(i);
return 0;
}
void Init_string(char *s,char *p)
{
printf("input string s , p:\n");
gets(s);
gets(p);
}
int Index_str(char *s,char *p)
{
int i;
char *str;
str = strstr(s,p);
if(str == NULL)
return -1;
else
{
for(i = 0; str != s; s ++)
{
i ++;
}
return i+1;
}
}
void print(int i)
{
if(i == -1)
printf("String p not be found !\n");
else
printf("The pos is: %d\n",i);
}
(3)性能分析
由于BF算法,劣与KMP等改进算法。