主字符串(str)中是否存在指定的子字符串(sub),在常规顺序下查找并返回第一个位置的C语言代码不使用库函数
时间: 2024-10-25 22:10:29 浏览: 7
在C语言中,如果你想检查主字符串`str`是否包含指定的子字符串`sub`,并且返回第一个匹配的位置,可以使用经典的逐字符比较循环。下面是一个简单的示例代码:
```c
#include <stdio.h>
#include <string.h>
int findSubstring(char str[], char sub[]) {
int mainLen = strlen(str);
int subLen = strlen(sub);
// 检查子串长度是否大于主串长度
if (subLen > mainLen)
return -1; // 如果子串过长,不可能找到
// 从头开始遍历主串,寻找子串
for (int i = 0; i <= mainLen - subLen; i++) {
int match = 1;
// 比较每一个字符是否匹配
for (int j = 0; j < subLen; j++) {
if (str[i + j] != sub[j])
match = 0; // 不匹配则跳出内部循环
}
if (match) { // 找到匹配
return i; // 返回子串起始位置
}
}
return -1; // 如果未找到子串,返回-1
}
int main() {
char str[] = "Hello, world!";
char sub[] = "world";
int position = findSubstring(str, sub);
if (position != -1)
printf("子串 '%s' 的位置是 %d\n", sub, position);
else
printf("子串 '%s' 不存在于 '%s'\n", sub, str);
return 0;
}
```
阅读全文