#include<stdio.h>
typedef struct {
char*str;//字符串存储空间的起始地址
int length;//字符串长
int capacity;//存储空间的容量
}SString;
int indexStr(SString S,SString T,int pos)
{
int i,j;
if((S.length<1)||(T.length<1)||(S.length<(pos+T.length-1)))
{
printf("第一段出了问题");
printf("-1");
return -1;
}
for(i=pos,j=0;i<S.length&&j<T.length;)
{
if(S.str[i]==T.str[j])
{
i++,j++;
}
else
{
i=i-j+1;
j=0;
}
}
if(j==T.length)
{
printf("1");
return i-T.length;
}
else
{
printf("0");
return -1;
}
}
int main()
{
SString S = {"abcd",4,4};
SString T = {"cd",2,2};
printf("结构体赋值完成");
int pos = 0;
indexStr(S,T,pos);
}
第一个空是i-j+1这是我没想到的
我本来以为是i+1,忽略了当如果T的前面一样后面不一样的情况
另外那里的S是指针变量,不能直接填,要去取字符串,即*S