1.数据域、字符内容
2.字符串长度
操作:
初始化字符串
暴力匹配
#include<stdio.h>
#include<stdlib.h>
typedef struct string{
char *data;
int len;
}string;
string* initstring()
{
string* s=(string*)malloc(sizeof(string));
s->data=NULL;
s->len=0;
}
void stringassign(string* s,char* data)
{
if(s->data)
{
free(s->data);
}
int len=0;
char* temp=data;
while(*temp)
{
len++;
temp++;
}
if(len==0)
{
s->data=NULL;
s->len=0;
}
else
{
temp=data;
s->len=len;
s->data=(char*)malloc(sizeof(char)*(len+1));
for(int i=0;i<len;i++,(temp)++)
{
s->data[i]=*temp;
}
}
}
void print(string* s)
{
for(int i=0;i<s->len;i++)
{
printf(i==0?"%c":"->%c",s->data[i]);
}
printf("\n");
}
void forcematch(string* master,string* sub)
{
int i=0;
int j=0;
while(i<master->len&&j<sub->len){
if(master->data[i]==sub->data[j])
{
i++;
j++;
}
else
{
i=i-j+1;
j=0;
}
//TODO
}
if(j==sub->len)
{
printf("forcesuccess\n");
}
else
{
printf("forcefail\n");
}
}
int main()
{
string* s=initstring();
stringassign(s,"hello");
print(s);
string* s1=initstring();
stringassign(s1,"lo");
print(s1);
forcematch(s,s1);
return 0;
}