C语言
使用顺序表实现的字符串类型,以及字符串的基本操作。
如字符串赋值,字符串之间的复制,字符串比较是否相同,字符串的拼接以及字符串的打印。
StringOperation.h
#ifndef STRINGOPERATION_H_INCLUDED
#define STRINGOPERATION_H_INCLUDED
#include <stdio.h>
#include <stdlib.h>
#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 <stdio.h>
#include <stdlib.h>
#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 <stdio.h>
#include <stdlib.h>
#include "StringOperation.h"
#include "StringOperation.c"
int main()
{
String str1,str2,str3;
InitString(&str1);
InitString(&str2);
InitString(&str3);
Operation(&str1,&str2,&str3);
return 0;
}