C语言代码 str中查找sub返回在sub中的起始位置找不到返回-1 不使用strstr()
时间: 2024-10-29 21:18:04 浏览: 5
在一组文本数据中查找包含包头包尾完整数据帧的方法,C语言代码实现,DEV C++ 5.11 编译通过
在C语言中,如果你想在一个字符串`str`中查找子串`sub`并返回其起始位置,但不使用标准库函数`strstr()`,可以自定义一个函数来实现。下面是一个简单的例子,它遍历整个字符串,逐个字符地比较:
```c
#include <stdio.h>
#include <string.h>
int find_sub(char* str, char* sub) {
int len1 = strlen(str);
int len2 = strlen(sub);
if (len2 > len1) { // 如果子串长度大于原字符串,则不可能找到
return -1;
}
for (int i = 0; i <= len1 - len2; i++) {
int match = 1; // 初始化匹配状态为1,表示找到了
for (int j = 0; j < len2; j++) {
if (str[i + j] != sub[j]) { // 每次检查一个字符是否相等
match = 0; // 匹配失败
break;
}
}
if (match) { // 找到匹配,返回开始位置
return i;
}
}
// 遍历结束后未找到,返回-1
return -1;
}
int main() {
char str[] = "Hello, World!";
char sub[] = "World";
int pos = find_sub(str, sub);
if (pos == -1) {
printf("Substring not found.\n");
} else {
printf("Substring found at position %d.\n", pos);
}
return 0;
}
```
阅读全文