#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;
return s;
}
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 PrintString(String* s)
{
for (int i = 0; i < s->len; i++)
{
printf(i == 0 ? "%c" : "->%c",s->data[i]);
}
printf("\n");
}
void Match(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 - j + 1;
j = 0;
}
}
if (j == sub->len)
{
printf("match success\n");
}
else
{
printf("match fail\n");
}
}
int main()
{
String* s1 = initString();
String* s2 = initString();
StringAssign(s1, "ababc");
StringAssign(s2, "abc");
PrintString(s1);
PrintString(s2);
Match(s1, s2);
return 0;
}
C语言实现字符串暴力匹配算法
于 2022-10-29 16:30:40 首次发布