求大神看看这段代码有什么需要改的地方没有————小白求赐教(关于串操作的)
/*strinsert: 串插入操作strcopy: 串复制操作
strempty: 串判空操作
strlength: 返回串长度
strclear: 串清空操作
strcat: 串粘贴操作
strsub: 求子串操作
strindex: 串定位操作*/
#include<stdio.h>
#include<string.h>
#define MAXLEN 60
typedef struct{
char ch[MAXLEN];
int len;
}sstring;
bool strinsert(sstring *s,sstring t,int pos){
if(s->len<pos-1||pos<=0){
return false;
}
else{
for(int i=s->len-1;i>=pos-1;i--){
if(i+t.len>=MAXLEN){
continue;
}
else{
s->ch[i+t.len]=s->ch[i];
}
}
for(int i=0;i<t.len;i++){
if(pos+i>=MAXLEN){
break;
}
s->ch[pos+i]=t.ch[i];
}
s->len=s->len+t.len>=MAXLEN?MAXLEN:s->len+t.len;
}
return true;
}
void strcopy(sstring *s,sstring t){
*s=t;
}
bool strempty(sstring s){
if(s.len==0){
return true;
}
else{
return false;
}
}
int strlength(sstring s){
return s.len;
}
void strclear(sstring *s){
s->len=0;
}
void strcat(sstring *s,sstring t){
for(int i=0;i<t.len;i++){
if(i+s->len>=MAXLEN){
break;
}
s->ch[s->len+i]=t.ch[i];
}
s->len=s->len+t.len>=MAXLEN?MAXLEN:s->len+t.len;
}
bool strsub(sstring *sub,sstring s,int pos,int len){
if(pos<=0||pos+len>s.len+1){
return false;
}
else{
for(int i=0;i<len;i++){
sub->ch[i]=s.ch[pos+i];
}
sub->len=len;
}
return true;
}
bool strindex(sstring s,sstring t,int *seat){
int j=0;
for(int i=0;i<s.len-t.len+j&&j<t.len;){
if(s.ch[i]==t.ch[j]){
if(j==0){
*seat=i+1;
}
j++;i++;
}
else if(j){
i-=j-1;j=0;
}
else{
i++;
}
}
if(j==t.len){
return true;
}
else{
return false;
}
}
int main(void){
printf("Hello World!\n");
return 0;
}