在C語言中,字符串是以字符數(shù)組的形式存在的。在實(shí)際開發(fā)中,經(jīng)常需要在字符串中查找一個(gè)子串是否存在。本文將介紹用C語言實(shí)現(xiàn)字符串子串查找的方法。
1. strstr()函數(shù)
C語言中提供了一個(gè)字符串庫函數(shù)strstr(),可以用來查找一個(gè)字符串中是否包含另一個(gè)字符串。該函數(shù)的原型為
stst char str2);
其中,str1表示要查找的字符串,str2表示要查找的子串。該函數(shù)會(huì)返回子串在字符串中次出現(xiàn)的位置,如果沒有找到則返回NULL。
clude
tain()
char str1[] = "hello world";
char str2[] = "world";
char p;
p = strstr(str1, str2);
if (p != NULL)
{tf", p - str1);
}
else
{tf");
}
找到了,位置是6
2. 自己實(shí)現(xiàn)查找函數(shù)
如果不想使用系統(tǒng)提供的函數(shù),也可以自己實(shí)現(xiàn)查找函數(shù)。具體實(shí)現(xiàn)方法如下
(1)遍歷字符串,找到個(gè)與子串個(gè)字符相同的字符;
(2)從該位置開始,比較字符串中剩下的字符與子串中的字符是否相同,如果全部相同,則說明找到了子串。
clude
td_substr(char str1, char str2)
{t i, j, k;
for (i = 0; str1[i] != '\0'; i++)
{
for (j = i, k = 0; str2[k] != '\0' && str1[j] == str2[k]; j++, k++);
if (str2[k] == '\0')
{ i;
}
}
tain()
char str1[] = "hello world";
char str2[] = "world";t pos;
d_substr(str1, str2);
if (pos != -1)
{tf", pos);
}
else
{tf");
}
找到了,位置是6
本文介紹了兩種用C語言實(shí)現(xiàn)字符串子串查找的方法,一種是使用系統(tǒng)提供的函數(shù)strstr(),另一種是自己實(shí)現(xiàn)查找函數(shù)。在實(shí)際開發(fā)中,可以根據(jù)需要選擇合適的方法。