字符串查找函数
生活中,我们经常会查找文档,例如从花名册中查找某个人,从报表中查找某个季度的数据,在C语言中,也经常要编程实现文本查找功能,为此,C语言提供了strchr()、strrchr()和strstr()三个函数来实现对字符串的查找功能,接下来针对这3个函数进行详细地讲解。
1、strchr()函数
strchr()函数用来查找指定字符在指定字符串中第1次出现的位置,函数声明如下:
char *strchr(const char *str, char c);
在上述函数声明中,参数str为被查找的字符串,c是指定的字符。如果字符串str中包含字符c,strchr()函数将返回一个字符指针,该指针指向字符c第1次出现的位置,否则返回空指针。
strchr()函数的用法示例如下:
char *p = "abcdef";
char *idx1 = strchr(p, 'e');
char *idx2 = strchr(p, 't');
上述代码中,在字符“abcdef”中分别查找字符‘e’与字符第一次出现的位置,idx1的值即为字符‘e’的位置,而字符串中没有字符‘t’,查找不到,因此idx2的值为空。
2、strrchr()函数
strrchr()函数用来查找指定字符在指定的字符串中最后1次出现的位置,函数声明如下:
char *strrchr(const char *str, char c);
在上述函数声明中,参数str为被查找的字符串,c是指定的字符。如果字符串str中包含字符c,strchr()函数将返回一个字符指针,该指针指向字符c最后一次出现的位置,否则返回空指针。
由于strrchr()函数的用法与strchr()函数非常相似,这里不再举例说明。
3、strstr()函数
上面两个函数都只能搜索字符串中的单个字符,如果要想判断在字符串中是否包含指定字符串时,可以使用strstr()函数,函数声明如下:
char *strstr(const char *haystack, const char *needle);
在上述函数声明中,参数haystack是被查找的字符串,needle是子字符串。如果在字符串haystack中找到了字符串needle,则返回子字符串的指针,否则返回空指针。
strstr()函数的用法示例如下所示:
char *p = "abcdef";
char *idx1 = strstr(p, "abc");
char *idx2 = strstr(p, "nihao");
上述代码先定义了一个指针p指向字符串“abcdef”,然后分别在字符串中查找子串“abc”和子串“nihao”,并将查找结果返回给char变量idx1与idx2。当查找“abc”子串时,“abc”子串的位置在字符串的开头,因此idx1的位置为字符串的位置,idx1的值为“abcdef”。当查找子串“nihao”时,字符串中没有包含该子串,因此查找不成功,idx2的值为空。