Assign函数有问题,使赋值出现错误
/*********************************************************************
程序名:
版权:
作者:
日期: 2024-04-16 21:58
说明:
*********************************************************************/
#include <iostream>
#define MaxSize 100
typedef struct {
char data[MaxSize];
int length;
} SqString;
void Assign(SqString &s, char str[]) {
int i = 0;
while (str[i] != '\0') {
s.data[i] != str[i];
i++;
}
s.length = i;
}
void DestroyStr(SqString s)
{ }
void StrCopy(SqString &s, SqString t) {
int i;
for (i = 0; i < t.length; i++)
s.data[i] = t.data[i];
s.length = t.length;
}
int StrLength(SqString s) {
return (s.length);
}
int StrEqual(SqString s, SqString t) {
int i = 0;
if (s.length != t.length)
return (0);
else {
for (i = 0; i < s.length; i++)
if (s.data[i] != t.data[i])
return 0;
return 1;
}
}
SqString Concat(SqString s, SqString t) {
SqString r;
int i, j;
for (i = 0; i < s.length; i++)
r.data[i] = s.data[i];
for (j = 0; j < t.length; j++)
r.data[s.length + j] = t.data[j];
r.length = i + j;
return r;
}
SqString SubStr(SqString s, int i, int j) {
SqString t;
int k;
if (i < 1 || i > s.length || j < 1 || i + j > s.length + 1)
t.length = 0;
else {
for (k = i - 1; k < i + j - 1; k++)
t.data[k + 1 - i] = s.data[k];
t.length = j;
}
return t;
}
int Index(SqString s, SqString t) {
int i = 0, j = 0;
while (i < s.length && j < t.length) {
if (s.data[i] == t.data[j]) {
i++;
j++;
} else {
i = i - j + 1;
j = 0;
}
}
if (j >= t.length)
return i - t.length + 1;
else
return 0;
}
int InsStr(SqString &s, int i, SqString t) {
int j;
if (i < 1 || i > s.length + 1)
return 0;
else {
for (j = s.length - 1; j >= i - 1; j--)
s.data[j + t.length] = s.data[j];
for (j = 0; j < t.length; j++)
s.data[i + j - 1] = t.data[j];
s.length = s.length + t.length;
return 1;
}
}
int DelStr(SqString &s, int i, int j) {
int k;
if (i < 1 || i > s.length || j < 1 || i + j > s.length + 1)
return 0;
else {
for (k = i + j - 1; k < s.length; k
/*********************************************************************
程序名:
版权:
作者:
日期: 2024-04-16 22:36
说明:
*********************************************************************/
#include <iostream>
#include "SqString.cpp"
using namespace std;
void match(SqString s, SqString t) {
int i = 0, j = 0, max = i;
int count, maxcount = 0;
while (i < s.length) {
j = i + 1;
count = 1;
while (j < t.length && s.data[i] == t.data[j]) {
i++;
j++;
count++;
}
if (count > maxcount) {
max = i;
maxcount = count;
} else {
i = i - j + 1;
j = 0;
}
}
if (maxcount > 1) {
printf("最大相同子串为:");
int i = max;
for (i; i < max + maxcount; i++)
printf("%c", s.data[i]);
printf("\n");
}
}
int main() {
SqString s, t;
char s1[] = "abcdef";
char s2[] = "bcdeg";
Assign(s, s1);
Assign(t, s2);
printf("s:");
DispStr(s);
printf("t:");
DispStr(t);
// match(s, t);
return 0;
}