采用顺序结构存储串,编写一个函数index(s1,s2),用于s2是否是s1的子串。若是,返回其在主串的位置;否则返回-1.用c语言编写完整代码
时间: 2024-02-27 12:53:20 浏览: 88
下面是采用顺序结构存储串,编写的函数index(s1,s2)的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXLEN 100
int index(char *s1, char *s2) {
int i, j, k;
int len1 = strlen(s1), len2 = strlen(s2);
for (i = 0; i < len1 - len2 + 1; i++) {
for (j = i, k = 0; s2[k] != '\0' && s1[j] == s2[k]; j++, k++);
if (k == len2) return i;
}
return -1;
}
int main() {
char s1[MAXLEN], s2[MAXLEN];
printf("请输入主串s1:");
scanf("%s", s1);
printf("请输入子串s2:");
scanf("%s", s2);
int pos = index(s1, s2);
if (pos != -1) {
printf("子串在主串中的位置为:%d\n", pos);
} else {
printf("子串不是主串的子串!\n");
}
return 0;
}
```
该函数的思路是:枚举主串中每一个可能的子串起点,然后逐个字符比较主串和子串对应位置上的字符。如果某个位置上的字符不匹配,就跳出当前循环,开始枚举下一个子串起点。如果子串中的所有字符都能和主串中对应的字符匹配,就说明子串是主串的一个子串,返回子串在主串中的起始位置。如果遍历完所有可能的子串起点后都没有找到子串,就返回-1表示子串不是主串的子串。
以上代码可以通过以下方式编译并运行:
```bash
$ gcc -o main main.c
$ ./main
请输入主串s1:hello world
请输入子串s2:world
子串在主串中的位置为:6
```
阅读全文
相关推荐

















