#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
本文探讨了2017年上半年软考程序员考试中的一道题目,重点在于字符串处理的细节。作者指出,第一个空格应填写i-j+1,而非i+1,原因是考虑到了字符串前后部分不一致的情况。同时强调,S作为指针变量,在填充时需取字符串值,即用*S表示。

被折叠的 条评论
为什么被折叠?



