#include<stdio.h>
#include<stdlib.h>
#include"fix_len_seq_str.h"
/****StrAssign****/
Bool StrAssign(char *Str ,const char *pc)
{
int len=0;
int i;
char *temp;
temp=pc;
while(*temp!='\0')
{
temp++;
len++;
}
if(len>MAX)
{
printf("Too long string!\n");
return False;
}
else
{
*Str=len;
for(i=0;i<len;i++)
*(Str+i+1)=*(pc+i);
return True;
}
}
/****StrCopy****/
Bool StrCopy(char *Str,char *pc)
{
int i=1;
int len=*pc;
if(pc==NULL)
{
printf("String doesn't exit!\n");
return False;
}
while(i<=len)
{
*(Str+i)=*(pc+i);
i++;
}
*Str=len;
return True;
}
/****StrEmpty****/
Bool StrEmpty(char *Str)
{
if(*Str==0)
return True;
else
return False;
}
/****StrCompare****/
int StrCompare(char *Str,char *Str1)
{
int i,len,len1;
i=1;
len=*Str;
len1=*Str1;
if(len==len1)
{
while(i<=len)
{
if(*(Str+i)==*(Str1+i))
i++;
else if(*(Str+i)>*(Str1+i))
return 1;
else
return -1;
}
return 0;
}
else if(len>len1)
return 1;
else
return -1;
}
/****StrLength****/
int StrLength(char *Str)
{
return *Str;
}
/****ClearStr****/
void ClearSrt(char *Str)
{
int len=*Str;
int i;
for(i=1;i<=len;i++)
*(Str+i)='\0';
*Str=0;
}
/****ConCat****/
Bool ConCat(char *Str,char *s1,char *s2)
{
int len1,len2,cpy_len,i;
if(s1==NULL||s2==NULL)
return False;
len1=*s1;
len2=*s2;
if(len1==MAX)
{
for(i=1;i<=len1;i++)
{
*(Str+i)=*(s1+i);
}
*Str=MAX;
return True;
}
else if(len1<MAX&&len1+len2>MAX)
{
for(i=1;i<=len1;i++)
{
*(Str+i)=*(s1+i);
}
cpy_len=MAX-len1;
for(i=1;i<=cpy_len;i++)
{
*(Str+len1+i)=*(s2+i);
}
*Str=MAX;
return True;
}
else if(len1+len2<=MAX)
{
for(i=1;i<=len1;i++)
*(Str+i)=*(s1+i);
for(i=1;i<=len2;i++)
*(Str+len1+i)=*(s2+i);
*Str=len1+len2;
return True;
}
}
/****SubString****/
Bool SubString(char *sub,char *Str,int pos,int lenth)
{
int len,i;
len=*Str;
if(pos<1||pos>len)
{
*sub=0;
return True;
}
if(lenth<0||lenth>len)
{
printf("SubString Error lenth!\n");
return False;
}
if(pos+lenth>len+1)
{
printf("SubString Error lenth!\n");
return False;
}
for(i=0;i<lenth;i++)
{
*(sub+i+1)=*(Str+pos+i);
}
*sub=lenth;
return True;
}
/****Index****/
int Index(char *Str,char *s1,int pos)
{
int len,len1,i;
Sstr sub;;
len=*Str;
len1=*s1;
if(pos+len1>len||pos<1)
{
printf("Error pos value!\n");
return 0;
}
i=pos;
while(i+len1<=len+1)
{
SubString(sub,Str,i,len1);
if(StrCompare(sub,s1)==0)
return i;
i++;
}
return 0;
}
/****Replace****/
Bool Replace(char *Str,char *s1,char *s2)
{
int i,len,len1,len2,index;
if(s1==NULL||s2==NULL)
return False;
len=*Str;
len1=*s1;
len2=*s2;
i=1;
if(len1>len)
{
printf("Repalce Error string1!\n");
return False;
}
while(i+len1<=len+1)
{
index=Index(Str,s1,i);
if(index==0)
{
printf("Master str has no sub str like s1!\n");
return False;
}
StrDelete(Str,index,len1);
StrInsert(Str,index,s2);
len=*Str;
i=index+len2;
}
return True;
}
/****StrInsert****/
Bool StrInsert(char *Str,int pos,char *s1)
{
int i,len,len1,re_len;
Sstr re_s;
len=*Str;
len1=*s1;
if(s1==NULL)
{
printf("invalid str1!\n");
return False;
}
if(pos>len+1||pos+len1>MAX+1)
{
printf("Error pos!\n");
return False;
}
re_len=len+1-pos;
if(SubString(re_s,Str,pos,re_len)==False)
{
printf("Insert error !\n");
return False;
}
//DisStr(re_s);
/*for(i=0;i<len1;i++)
*(Str+pos+i)=*(s1+i);
for(i=0;i<re_len;i++)
*(Str+pos+len1+i)=*(re_s+i+1);*/
//StrDelete(Str,pos,re_len);
StrDelete(Str,pos,re_len);
//DisStr(Str);
ConCat(Str,Str,s1);
ConCat(Str,Str,re_s);
//*Str=len+len1;
return True;
}
/****StrDelete****/
Bool StrDelete(char *Str,int pos,int length)
{
int i,len,len1,re_len;
Sstr re_s;
len=*Str;
if(pos+length>len+1)
{
printf("Delete error 1\n");
return False;
}
if(length>len)
{
printf("Delete error 2\n");
return False;
}
re_len=len-pos-length+1;
if(SubString(re_s,Str,pos+length,re_len)==False)
{
*Str=pos-1;
printf("Delete error 3\n");
return False;
}
*Str=pos-1;
ConCat(Str,Str,re_s);
return True;
}
/****DisStr****/
void DisStr(char *Str)
{
int i,len;
len=*Str;
printf("%d ",len);
for(i=1;i<=len;i++)
{
printf("%c",*(Str+i));
}
printf("\n");
}
fixed_length_seq_string.rar_fixed
版权申诉
199 浏览量
2022-09-24
20:17:43
上传
评论
收藏 166KB RAR 举报
林当时
- 粉丝: 103
- 资源: 1万+
最新资源
- 目标检测-零售食品LOGO检测数据集-5000张图-+对应VOC-COCO-YOLO三种格式标签+数据集划分脚本
- 目标检测-零售食品LOGO检测数据集-1000张图-+对应VOC-COCO-YOLO三种格式标签+数据集划分脚本
- Delphi 12 控件之LMD.VCL.Full.Version.zip
- 常用阀门定位器的调试步骤及说明
- 计算机科学选修课:人工智能导论 第二节 PPT
- 计算机科学选修课:人工智能导论 第一章 PPT
- 忘记navicat密码时,此工具可以帮您查看密码
- 电子商务-电子商务平台-水果销售-在线购物-果库小程序.zip
- 基于React的后台开发框架(javascript)
- 用户界面设计-滑动选项卡-交互组件-用户体验-滑动选项卡小程序.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0