C strstr() 语法
strstr() 是 C 语言 <string.h> 标准库的一个函数,它用于查找在字符串中某个子串首次出现的指针。
语法:
strstr(str, sub)说明:
strstr() 函数接收以下 2 个参数。
str(const char*):是一个字符串的指针。sub(const char*):查找的子串的指针。
strstr(str, sub) 表示在 str 中查找 sub。如果能找到,则返回第一个匹配项的指针(即内存地址);如果未能找到匹配项,则返回 NULL。
提示:
- strstr 是 “string string” 的缩写。
- strstr() 函数是在字符串中查找某个 “子串” 首次出现的位置,而 strchr() 函数是在字符串中某个 “字符” 首次出现的位置。
C strstr() 摘要
| 使用频率 | 高 |
|---|---|
| 修改字符串 | 否 |
| 官方文档 | 查看 |
C strstr() 示例
接下来,我们通过几个简单的例子来讲解一下 C strstr() 函数是如何使用的。
示例 1:strstr() 基本用法
#include <stdio.h>
#include <string.h>
int main(void)
{
char str1[] = "I love Python Python Python";
char str2[] = "Python";
// 在 str1 中查找 str2
char* p = strstr(str1, str2);
// 如果找到匹配项,则打印匹配项位置
if (p != NULL) {
printf("匹配项位置:%td", p - str1);
} else {
printf("未能找到匹配项");
}
return 0;
}运行结果如下。
匹配项位置:7分析:
虽然 str1 中包含了 3 个 "Python",但 strstr() 函数只会返回 "Python" 第一次出现的指针。然后我们使用 “"Python" 首次出现的指针” 减去 “整个字符串的指针” ,此时就可以得到该子串在字符串中首次出现的下标位置了(下标从 0 开始)。
示例 2:strstr() 查找的子串不存在
#include <stdio.h>
#include <string.h>
int main(void)
{
char str1[] = "I love Python Python Python";
char str2[] = "Java";
// 在 str1 中查找 str2
char* p = strstr(str1, str2);
// 如果找到匹配项,则打印匹配项位置
if (p != NULL) {
printf("匹配项位置:%td", p - str1);
} else {
printf("未能找到匹配项");
}
return 0;
}运行结果如下。
未能找到匹配项分析:
当查找的子串不存在时,strstr() 函数就会返回 NULL。
strstr() 的应用场景
在实际开发中,strstr() 函数在字符串处理中非常有用,它主要用于以下场景。
- 检查一个字符串是否包含另一个子串。
- 从一个较长的文本中提取特定标记或关键词之后的内容。
- 实现简单的文本搜索功能。
- 解析特定格式的数据字符串。
需要注意的是,strstr() 是严格区分大小写的。如果想要不区分大小写的子字符串查找,我们可以考虑使用 strcasestr() 函数(非标准的 GNU 扩展),或自己实现相应的逻辑。
