在一个字符串中查找子串 参数: str, 源字符串 sub, 需查找的子串 返回: 如找到,返加子串的位置,否则返回-1
时间: 2024-11-13 17:24:25 浏览: 10
在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`类型用于存储非负整数索引,防止溢出。
相关问题
在记事本中写一个代码要求在一个字符串中查找子串 参数: str, 源字符串 sub, 需查找的子串 返回: 如找到,返加子串的位置,否则返回-1
在记事本中编写一个简单的代码,使用Python语言为例,可以创建一个函数来查找子串。这个函数通常叫做`find_substring`:
```python
def find_substring(str, sub):
# 使用内置的find()方法查找子串
position = str.find(sub)
# 如果找到子串,返回其位置;否则返回-1
if position != -1:
return position
else:
return -1
# 示例用法
source_string = "Hello, World!"
substring_to_find = "World"
result = find_substring(source_string, substring_to_find)
print(f"子串 '{substring_to_find}' 在源字符串中位于位置 {result}")
```
在这个例子中,`str.find(sub)`会返回子串`sub`在`str`中第一次出现的位置,如果找不到则返回-1。
用c语言编写一个程序要求在一个字符串中查找子串 参数: str, 源字符串 sub, 需查找的子串 返回: 如找到,返加子串的位置,否则返回-1
在C语言中,你可以使用`strstr()`函数来查找子串在源字符串中的位置。这个标准库函数会在`str`中查找`sub`是否存在,并返回首次出现`sub`的指针,如果没找到则返回`NULL`。为了表示位置,你可以从0开始计数,所以需要加上1。以下是简单的代码示例:
```c
#include <stdio.h>
#include <string.h>
int findSubstring(char* str, char* sub) {
if (str == NULL || sub == NULL) {
return -1; // 如果输入为空,直接返回-1
}
char* result = strstr(str, sub); // 查找子串
if (result != NULL) { // 找到了
// 返回子串的第一个字符位置,注意是从0开始的索引
return result - str + 1;
} else {
// 子串未找到
return -1;
}
}
int main() {
char str[] = "Hello, world!";
char sub[] = "world";
int position = findSubstring(str, sub);
if (position != -1) {
printf("Substring '%s' found at position %d.\n", sub, position);
} else {
printf("Substring not found.\n");
}
return 0;
}
```
在这个例子中,`findSubstring()`函数会查找并返回子串`sub`在`str`中的位置。如果没有找到,它将返回-1。
阅读全文