用C语言编程实现以下功能:1、创建串s. 2、求从主串s的下标pos起,子串t第一次出现的位置,成功返回位 置序号,不成功返回-1
时间: 2024-12-16 20:15:57 浏览: 7
在C语言中,你可以使用字符串函数`strstr()`来实现这个功能。`strstr()`函数会在给定的字符串`main_str`中查找子串`substr`首次出现的位置。如果找到,它会返回指向子串的第一个字符的指针;如果没有找到,它将返回`NULL`。为了适应题目要求返回位置序号而不是指针,你需要从0开始计数并返回实际的索引,同时检查是否找到子串。
这是一个简单的示例代码:
```c
#include <stdio.h>
#include <string.h>
int findSubstring(char* main_str, char* substr, int pos) {
// 检查输入有效性
if (main_str == NULL || substr == NULL || strlen(main_str) <= pos || strlen(substr) > pos) {
return -1; // 如果有任何错误条件,返回-1
}
// 在从pos开始的部分查找子串
char* start = main_str + pos;
if (start != NULL && strstr(start, substr)) {
// 计算并返回子串第一次出现的实际位置(注意加1转换成索引)
return start - main_str + 1;
} else {
return -1; // 如果未找到子串,返回-1
}
}
// 示例
int main() {
char s[] = "Hello, world!";
char t[] = "world";
int pos = 7;
int result = findSubstring(s, t, pos);
if (result != -1) {
printf("子串 '%s' 在主串 '%s' 的第 %d 位置\n", t, s, result);
} else {
printf("子串 '%s' 在主串 '%s' 中未找到\n", t, s);
}
return 0;
}
```
在这个例子中,`findSubstring`函数接受主串`s`,子串`t`和起始位置`pos`作为参数,并返回子串在指定位置后的第一次出现位置。如果没有找到,则返回-1。
阅读全文