#include<stdio.h>
#include<math.h>
#include<string.h>
#include<malloc.h>
#include<stdlib.h>
/*函数结果状态代码*/
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
typedef int Status;
/* */
typedef struct
{
char *ch;
int length;
}HString;
Status StrAssign(HString *T,char *chars)
{
int i,j;
if((*T).ch)
{
free((*T).ch);
(*T).ch=NULL;
}
i=strlen(chars);
if(!i)
{
(*T).ch=NULL;
(*T).length=0;
}
else
{
(*T).ch=(char*)malloc(i*sizeof(char));
if(!(*T).ch)
{
printf("OVERFLOW");
exit(0);
}
for(j=0;j<i;j++)
(*T).ch[j]=chars[i];
(*T).length=i;
}
return OK;
}
Status StrCopy(HString*T,HString S)
{
int i;
if((*T).ch)
free((*T).ch);
(*T).ch=(char*)malloc(S.length*sizeof(char));
if(!(*T).ch)
{
printf("OVERFLOW");
exit(0);
}
for(i=0;i<S.length;i++)
(*T).ch[i]=S.ch[i];
(*T).length=S.length;
return OK;
}
Status StrEmpty(HString S)
{
if(S.length==0&&S.ch==NULL)
return TRUE;
else
return FALSE;
}
int StrCompare(HString S,HString T)
{
int i;
for(i=0;i<S.length&&i<T.length;i++)
if(S.ch[i]!=T.ch[i])
return S.ch[i]-T.ch[i];
return S.length-T.length;
}
int StrLength(HString S)
{
return S.length;
}
Status ClearString(HString *s)
{
if((*s).ch)
{
free((*s).ch);
(*s).ch=NULL;
}
(*s).length=0;
return OK;
}
Status SubString(HString *Sub,HString S,int pos,int len)
{
int i;
if(pos<1||pos>S.length||len<0||len>S.length-pos+1)
return ERROR;
if((*Sub).ch)
free((*Sub).ch);
if(!len)
{
(*
大家看看我的这个List()函数为什么显示不出来
这是一个C语言程序,实现了一系列字符串操作,包括创建、复制、比较、清空、子串提取、插入、删除等。程序中定义了一个HString结构体来存储字符串,并提供了相应的操作函数。此外,还实现了读取、插入、删除、复制、修改和查找字符串的功能,以及保存到文件的操作。
摘要由CSDN通过智能技术生成