最近在写一个程序,需要用到字符串匹配,并且返回匹配的字符串,C语言库函数中的strtstr无法满足我的要求,只能自己写了。
代码如下

//string match function
char *matchString(const char* buf, const char* sub) {
char* tbuf = buf;
char* tsub = sub;
int i = 0;//tbuf 主串的元素下标位置,从下标0开始找,可以通过变量进行设置,从其他下标开始找!
int j = 0;//tsub 子串的元素下标位置
while (i <= strlen(tbuf ) - 1 && j <= strlen(tsub )-1)
{
//字符相等,则继续匹配下一个字符
if (tbuf [i] == tsub [j])
{
i++;
j++;
}
//在匹配过程中发现有一个字符和子串中的不等,马上回退到 下一个要匹配的位置
else
{
i = i - j + 1;
j = 0;
}
}
//循环完了后j的值等于strlen(tsub) 子串中的字符已经在主串中都连续匹配到了
if (j == strlen(tsub))
{
return tsub;
}

return NULL;

}