#include<stdio.h>
#define true 1
#define false 0
#define maxsize 100
typedef struct {
char ch[maxsize];
int length;
}Str;
void InitString(Str &str){
str.length=0;
}
bool isEmptyString(Str str){
if(str.length==0){
return true;
}
else
return false;
}
void creatString(Str& str){
printf("请输入字符串");
scanf("%s",&str.ch);
}
bool lengthString(Str &str){
if(str.ch[0]=='\0')
return false;
while(str.ch[str.length]!='\0'){
str.length++;
}
printf("串长为%d\n",str.length);
return true;
}
void printString(Str str){
for(int i=0;i<str.length;i++){
printf("%c ",str.ch[i]);
}
printf("\n");
}
int subString(Str &substr,Str str,int pos,int len){
if(pos<1||pos>str.length||len<1||len>str.length-pos+1){
return false;
}else{
for(int i=0;i<len;i++)
substr.ch[i]=str.ch[pos+i-1];
substr.length=len;
printString(substr);
return true;
}
}
bool insertString(Str &str,Str s1,int pos){
if(pos<1||pos>str.length+1||str.length+s1.length>maxsize){
return false;
}
else{
for(int i=str.length-1;i>=pos-1;i--)
str.ch[s1.length+i]=str.ch[i];
for(int i=0;i<s1.length;pos++,i++)
str.ch[pos-1]=s1.ch[i];
str.length=str.length+s1.length;
str.ch[str.length]='\0';
printString(str);
lengthString(str);
return true;
}
}
int deleteString(Str& str,int pos,int len){
if(pos<1||pos>=str.length||len<1||len>str.length-pos+1)
return false;
for(int n=pos+len-1;n<str.length;n++,pos++)
str.ch[pos-1]=str.ch[n];
str.length=str.length-len;
str.ch[str.length]='\0';
printString(str);
lengthString(str);
return true;
}
int main(){
int len,pos;
Str str,substr,s1;
printf("建立字符串s1\n");
InitString(s1);
creatString(s1);
lengthString(s1);
printf("建立字符串str\n");
InitString(str);
creatString(str);
lengthString(str);
printString(str);
printf("请输入从串的第几个字符开始求子串pos以及要取出的子串长度length:\n");
scanf("%d %d",&pos,&len);
subString(substr,str,pos,len);
printf("请输入在str中插入s1的位置:");
scanf("%d",&pos);
insertString(str,s1,pos);
printf("请输入删除子串的起始位置pos以及长度len:");
scanf("%d %d",&pos,&len);
deleteString(str,pos,len);
}
串的基本操作(顺序存储结构)
最新推荐文章于 2024-06-10 11:09:44 发布