1顺序串:从串中删除第pos个字符开始的长度为len的字串
#include <stdio.h>
#include <string.h>
#define maxsize 256
typedef struct
{
char ch[maxsize];
int length;
}seqstring;
void strdel(seqstring *s,int pos ,int len)
{
char temp[maxsize];
if(pos>=1&&pos<=s->length-len+1)
{
strncpy(temp,s->ch,pos-1);
strcpy(temp+pos-1,s->ch+pos+len-1);
strcpy(s->ch,temp);
s->length=s->length-len;
}
}
void main()
{
seqstring s1={"d:\\user\\wang\\",13};
int start,length;
printf("start,length=");
scanf("%d,%d",&start,&length);
strdel(&s1,start,length);/* 将地址传给形参,形参是指针变量*/
puts(s1.ch);/* */
}
2
/* 顺序串的朴素模式匹配*/
int index(seqstring *s,seqstring *t,int pos)
{
int i,j;
i=pos;
j=1;
while(i<=s->length&&j<=t->length)
if(s->ch[i-1]==t->ch[j-1])
{ i++;
j++;
}
else
{i=i-j+2;
j=1;
}
if(j>t->length)
return (i-t->length);
else return 0;
}
void main() { seqstring s2={"abbabca",7}; seqstring s3={"abc",3}; int pos; int index(seqstring *s,seqstring *t,int pos); scanf("%d",&pos); printf("%d",index(&s2,&s3,pos)); }