采用顺序结构存储串,编写一个index(s1,s2),用于s2是否是s1的子串。若是,返回其在主串中的位置;否则返回-1,完整代码
时间: 2024-02-17 19:03:22 浏览: 161
串的顺序存储操作
以下是采用顺序结构存储串的index函数实现代码:
```c
#include <stdio.h>
#include <string.h>
#define MAXLEN 100
typedef struct{
char ch[MAXLEN];
int length;
}SqString;
int index(SqString s1, SqString s2){
int i,j;
for(i=0; i<=s1.length-s2.length; i++){
for(j=0; j<s2.length; j++){
if(s1.ch[i+j]!=s2.ch[j])
break;
}
if(j==s2.length)
return i+1;
}
return -1;
}
int main(){
SqString s1={"Hello, World!", 13};
SqString s2={"World", 5};
printf("%d\n", index(s1, s2)); // output: 7
return 0;
}
```
代码思路:遍历主串s1,对于每一个字符,判断其后是否与子串s2相同,若是,则返回该子串在主串中的位置;否则继续遍历。若遍历完主串s1后仍未找到子串s2,则返回-1。
阅读全文