数据结构_字符串的操作_c/c++

来源:互联网 发布:怎样装饰淘宝店铺 编辑:程序博客网 时间:2024/06/05 11:25
#include<stdio.h>#include<stdlib.h>#include<string.h>#define MAXLEN 10typedef struct{char ch[MAXLEN];int len;//串中最后一个字符所在下标 }Str;int strInsert(Str* s,int pos,Str* t){int i;if(pos<0||pos>s->len)return 0;if(s->len+t->len+1<MAXLEN)//插入后串长小于MAXLEN{for(i=s->len+t->len+1;i>t->len+pos;i--)s->ch[i] = s->ch[i-t->len-1];for(i=0;i<=t->len;i++)s->ch[pos+i] = t->ch[i];s->len = s->len+t->len+1;}else{if(pos+t->len+1<MAXLEN){//插入后串长大于MAXLEN,但串t可以全部插入for(i=MAXLEN-1;i>t->len+pos;i--){s->ch[i] = s->ch[i-t->len-1];}for(i=0;i<=t->len;i++)s->ch[pos+i] = t->ch[i];s->len = MAXLEN-1;}else{for(i=0;i<MAXLEN-pos;i++){s->ch[i+pos] =t->ch[i]; }s->len=MAXLEN-1;}}return 1;}int strDelete(Str*s,int pos,int len){//在串中删除序号为pos起长度为len个字符 int i;if(pos<0||pos>(s->len-len))return 0;for(i=pos+len;i<=s->len;i++)s->ch[i-len] = s->ch[i];s->len-=len;return 1; }/*串拷贝 */void strCopy(Str* s,Str* t){int i;for(i = 0;i<=t->len;i++){s->ch[i] = t->ch[i]; }s->len = t->len;}/*串比较函数*/int strCompare(Str s,Str t){int i;for(i=0;i<=s.len&&i<=t.len;i++)if(s.ch[i]!=t.ch[i])return s.ch[i]-t.ch[i];return (s.len-t.len);} /*串连接函数*/int strCat(Str *s,Str t){int i ,flag = 0;if(s->len+t.len+1<MAXLEN){for(i = 0;i<=t.len;i++)s->ch[s->len+1+i] = t.ch[i];s->len = s->len+t.len+1;flag = 1;}else if(s->len+1<MAXLEN){for(i=s->len+1;i<MAXLEN;i++)s->ch[i] = t.ch[i-s->len-1];s->len = MAXLEN-1;}return flag;//flag为一为全部连接否则是部分连接或无法连接 } /*求子串函数*/int subString(Str s,Str *sub,int pos,int len){int i;if(pos<0||pos>s.len||pos+len>s.len||len<1){sub->len = 0;return 0;}for(i = 0;i<len;i++)sub->ch[i] = s.ch[pos+i];sub->len = len-1;return 1;} /*定位函数*/int strIndex(Str*s,int pos,Str t){int i=pos,j=0;while(i<=s->len&&j<=t.len){if(!(s->ch[i]-t.ch[j])){i++;j++;}else{i=i-j+1;j=0;}}if(j>t.len)return i-j;return 0;} void scan(Str* t){printf("请输入\n"); scanf("%s",t->ch);t->len = strlen(t->ch)-1;}void print(Str *t){int i ;for (i = 0;i<=t->len;i++)printf("%c",t->ch[i]);}int main(void){Str t;Str * s = (Str*) malloc(sizeof(Str));//scan(s);scan(&t);//int i = strIndex(s,2,t);//strInsert(s,2,&t);//subString(*s,&t,2,3);//strCat(s,t);//int i = strCompare(*s,t);//strDelete(s,2,3);strCopy(s,&t);//printf("%d",i);print(s);return 0;} 

0 0
原创粉丝点击