3.对于字符串s和t,若t是s子串,返回t在s中的位置(t的首字符在s中对应的下标),否则返回-1。用c语言
时间: 2024-10-19 12:02:39 浏览: 29
在C语言中,我们通常使用标准库函数`strstr()`或者自定义一个函数来查找子串在字符串中的位置。如果你想要自定义一个函数,可以参考下面的代码实现,这里假设`s`是一个主字符串,`t`是一个子字符串:
```c
#include <string.h>
#include <stdio.h>
// 函数声明,返回子串在主串中的起始位置,找不到返回-1
int findSubstringInString(char* s, char* t) {
if (!s || !t) { // 确保输入非空
return -1;
}
// 使用逐个字符匹配的方式寻找子串
int len_s = strlen(s);
int len_t = strlen(t);
for (int i = 0; i <= len_s - len_t; i++) {
if (strncmp(&s[i], t, len_t) == 0) { // strncmp比较两个字符串是否相等,忽略大小写
return i;
}
}
// 如果没有找到,返回-1
return -1;
}
// 测试函数
int main() {
char str[] = "Hello, World!";
char substr[] = "World";
int position = findSubstringInString(str, substr);
if (position != -1) {
printf("Substring '%s' found at index %d\n", substr, position);
} else {
printf("Substring not found.\n");
}
return 0;
}
```
这段代码首先检查输入是否为空,然后遍历主字符串`s`的每个可能的起始位置,使用`strncmp()`函数逐字符对比子串`t`,如果找到完全匹配,则返回该位置;如果没有找到,则返回-1。
阅读全文