在一个字符串中查找子串 参数: str, 源字符串 sub, 需查找的子串 返回: 如找到,返加子串的位置,否则返回-1
时间: 2024-11-13 09:24:25 浏览: 25
python七种方法判断字符串是否包含子串
在C语言中,如果你想在一个源字符串(`str`)中查找子串(`sub`),可以使用`strstr()`函数,它是标准库中的字符串处理函数,其原型如下:
```c
char* strstr(const char* haystack, const char* needle);
```
这个函数会在`haystack`(源字符串)中查找`needle`(子串),如果找到,返回第一个匹配子串的首字符指针;如果没有找到,返回`NULL`。为了获取子串的位置(从0开始计数),你需要减去`haystack`,因为`strstr`返回的是`needle`的起始位置相对`haystack`的偏移量。所以,正确的做法是:
```c
size_t found_at = strstr(str, sub) - str; // 返回子串在原字符串中的索引
if (found_at != NULL) {
// 子串存在,索引大于0表示有前导零
size_t index = found_at > 0 ? found_at : 0;
// 打印或使用子串位置
printf("子串 '%s' 发现于位置: %zu\n", sub, index);
} else {
printf("子串 '%s' 未在字符串中找到\n", sub);
return -1; // 或者直接返回结果
}
```
这里的`size_t`类型用于存储非负整数索引,防止溢出。
阅读全文