C语言菜鸡,有错误的话,可以指出来,修改,捂脸遁走,存一份代码,免得以后找不到
#include <stdio.h>
#define MSIZE 256
typedef char ElementType;
typedef int BOOL;
typedef struct
{
ElementType data[MSIZE];
int length;
}SeqString;
//初始化串
void InitString(SeqString *pstr)
{
pstr->length = 0;
}
//将char类型数据赋值给seqstring的data数据中
void CreateString(SeqString * pstr, const char * achar)
{
int i = 0;
while (achar[i] != '\0')
{
pstr->data[i] = achar[i];
pstr->length++;
i++;
}
pstr->data[i] = '\0';
}
//计算串长
int ComputeStringLength(SeqString * pstr)
{
return pstr->length;
}
//串连接(分情况)
/*
1.当S1.length+S2.length<=MAXLEN时,则将S2直接加在S1的后面
2.当S1.length+S2.length>MAXLEN时,而S1.length<MAXLEN时,则与S1连接后
S2中超出MAXLEN的部分被截断
3.当S1.length==MAXLEN时,则S2全部被舍弃,不需要连接
*/
BOOL strCat(SeqString s1, SeqString s2, SeqString * s)
{
int i = 0, j, len1, len2;
len1 = s1.length;
len2 = s2.length;
if (len1 + len2 <= MSIZE)
{
j = 0;
while (s1.data[j] != '\0')
{
s->data[i] = s1.data[j];
i++;
j++;
}
j = 0;
while (s2.data[j] != '\0')
{
s->data[i] = s2.data[j];
i++;
j++;
}
return 1;
}
else if (s1.length < MSIZE && len1 + len2 > MSIZE)
{
for (i = 0; i < s1.length; i++)
s->data[i] = s1.data[i];
for (i = s1.length; i < MSIZE; i++)
s->data[i] = s2.data[i - s1.length];
s->length = MSIZE;
return 0;
}
else
{
for (i = 0; i < s1.length; i++)
s->data[i] = s1.data[i];
return 0;
}
}
//串比较
int strcmp(SeqString s1, SeqString s2)
{
//已知s1,s2,若s1 > s2,返回1;若s1 < s2,返回0;
int i;
for (i = 0; i < s1.length && i < s2.length; i++)
{
if (s1.length != s2.length)
{
if (s1.length > s2.length)
return 1;
else
return -1;
}
}
return 0;
}
//串复制
void strcpy(SeqString *s1,SeqString s2)
{
//将s2的值赋给s1
int i;
for (i = 0; i < s2.length; i++)
{
s1->data[i] = s2.data[i];
}
s1->length = s2.length;
}
void main(void)
{
SeqString as,bs, mystring;
const char * ac = "abcddcba";
const char * bc = "mko";
InitString(&as); //初始化
InitString(&bs);
CreateString(&as, ac); //将char类型数据赋值给seqString中的data
CreateString(&bs, bc);
strCat(as, bs, &mystring); //串连接
int len;
len = strcmp(as, bs); //串比较
strcpy(&as,bs); //串复制
}
推荐一个:https://blog.csdn.net/lijiedebiancheng/article/details/84206579