文章目录
- 结构体定义
- 初始化串
- 给串赋值
- 求主串的子串
- 比较两个字符串的值
- 拼接两个字符串
- 复制串
- 清空串
- 具体实现
结构体定义
typedef char ElemType;
typedef struct{
ElemType *ch ;
int length;
}SString;
初始化串
void InitStr(SString &Str){
Str.length=0;
Str.ch=NULL;//S的数据存储指向为空.
}
给串赋值
bool StrAssign(SString &Str,char *ch){
if(Str.ch){//如果Str中的数据不为空
free(Str.ch);
Str.ch=NULL;//Str的数据存储指向为空.
}
int len=0;
char *c=ch;//指向传过来的ch数组
//定位ch的长度,
while(*c){//解引用 ,当c中的数据不为空
len++;
c++;
}
//当ch数组为空
if(len==0){
cout<<"空串,赋值失败!"<
Str.ch=(char *)malloc(sizeof(char)*(len+1));
//cout<<(int)Str.ch[len]<
cout<<"空间分配失败!"<
for(int i=0;i<=len;i++){
Str.ch[i]=ch[i];
}
Str.length=len;
return true;
}
}
}
求主串的子串
bool GetSubString(SString &Str,SString &SubStr,int pos,int len ){
if(pos<0||pos>=Str.length||len<0||len>Str.length-pos) {
cout<<"位置或者长度不合法!"<//如果SubStr中的数据不为空
free(SubStr.ch);
SubStr.ch=NULL;//SubStr的数据存储指向为空.
}
if(len==0){
SubStr.ch=NULL;
SubStr.length=0;
cout<<"字串的长度为0"<
//分配空间
SubStr.ch=(char *)malloc(sizeof(char)*(len+1));
int sublen=0;//字串长度
for(int i=pos-1,j=0;j//i