c语言顺序表字符串比较,顺序表实现字符串类型及其基本操作

C语言

使用顺序表实现的字符串类型,以及字符串的基本操作。

如字符串赋值,字符串之间的复制,字符串比较是否相同,字符串的拼接以及字符串的打印。

StringOperation.h

#ifndef STRINGOPERATION_H_INCLUDED

#define STRINGOPERATION_H_INCLUDED

#include

#include

#define MAXSIZE 88

//串类型定义

typedef struct

{

char data[MAXSIZE];

int Length;

}String;

//串初始化

void InitString(String* s);

//字符串判空

int IsEmpty(String* s);

//字符串赋值

int StrAssign(String* s,char str[]);

//字符串间复制

int Strcpy(String* str1,String* str2);

//字符串比较

int Strcmp(String* str1,String* str2);

//输出字符串

int DispStr(String* s);

//字符串连接

int Concat(String* str1,String* str2,String* str3);

//操作函数

int Operation(String* str1,String* str2,String* str3);

#endif // STRINGOPERATION_H_INCLUDED

StringOperation.c

#include

#include

#include "StringOperation.h"

//串初始化

void InitString(String* s)

{

s->Length = 0;

}

//字符串判空

int IsEmpty(String* s)

{

return (s->Length == 0);

}

//字符串赋值

int StrAssign(String* s,char str[])

{

int i;

if(s->Length == MAXSIZE)

return 0; //判满

for(i = 0;str[i] != '\0'; i++)

s->data[i] = str[i];

s->Length = i;

return 1;

}

//字符串间复制

int Strcpy(String* str1,String* str2)

{

int i;

str1->Length = str2->Length;

for(i = 0;i < str2->Length; i++)

str1->data[i] = str2->data[i];

return 0;

}

//字符串比较

int Strcmp(String* str1,String* str2)

{

int i;

if(str1->Length != str2->Length)

return 0;

for(i = 0;i < str1->Length; i++)

if(str1->data[i] != str2->data[i])

break;

if(i == str1->Length)

return 1;

return 0;

}

//输出字符串

int DispStr(String* s)

{

int i;

if(!IsEmpty(s))

for(i = 0;i < s->Length; i++)

printf("%c",s->data[i]);

printf("\n\n");

return 0;

}

//字符串连接

int Concat(String* str1,String* str2,String* str3)

{

int i;

Strcpy(str3,str1);

str3->Length += str2->Length;

for(i = 0;i < str2->Length; i++)

str3->data[i + str1->Length] = str2->data[i];

return 0;

}

//操作函数

int Operation(String* str1,String* str2,String* str3)

{

char str[MAXSIZE];

printf("请输入字符数组str:\n");

scanf("%s",str);

StrAssign(str2,str);

Strcpy(str1,str2);

printf("str1:\n");

DispStr(str1);

printf("str2:\n");

DispStr(str2);

if(Strcmp(str1,str2))

printf("\nstr1和str2相同\n");

else

printf("\nstr1和str2不相同\n");

Concat(str1,str2,str3);

printf("\nstr3:\n");

DispStr(str3);

if(Strcmp(str1,str3))

printf("\nstr1和str3相同\n");

else

printf("\nstr1和str3不相同\n");

if(Strcmp(str2,str3))

printf("\nstr2和str3相同\n");

else

printf("\nstr2和str3不相同\n");

return 0;

}

main.c

#include

#include

#include "StringOperation.h"

#include "StringOperation.c"

int main()

{

String str1,str2,str3;

InitString(&str1);

InitString(&str2);

InitString(&str3);

Operation(&str1,&str2,&str3);

return 0;

}

标签:顺序,String,int,str2,str1,str3,Length,字符串,基本操作

来源: https://blog.csdn.net/qq_40767523/article/details/98206995

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值