码迷,mamicode.com
首页 > 其他好文 > 详细

串的基本操作

时间:2019-05-11 21:45:43      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:pos   size   class   turn   insert   pre   返回   ras   --   

include<stdio.h>
#include<stdlib.h>
typedef struct{
    char *ch;
    int length;
}string;

void strinsert(string &s,int pos,string t){
    if(pos<1||pos>s.length+1) exit(0);
    if(t.length){
        if(!(s.ch=(char*)realloc(s.ch,(s.length+t.length)*sizeof(char))))  exit(0);
        int i;
        for(i=s.length-1;i>pos-1;i--)  {
            s.ch[i+t.length]=s.ch[i];
        }
        for(i=0;i<t.length;i++){
            s.ch[pos-1+i]=t.ch[i];
        }
        s.length+=t.length;
    }
}
void strassign(string &t,char *chars){
    if(t.ch)  free(t.ch);
    int i;
    char *c;

    for(i=0,c=chars;*c;i++,c++);
    if(!i)  {t.ch=NULL;  t.length=0;}
    else {
        if(!(t.ch=(char*)malloc(i*sizeof(char)))) exit(0);
        for(int j=0;j<i;j++){
            t.ch[j]=c[j];
        }
        t.length=i;
    }
}
int strcompare(string s,string t){
    int i;
    for(i=0;i<s.length&&i<t.length;i++){
        if(s.ch[i]!=t.ch[i])  return s.ch[i]-t.ch[i];

    }
    return s.length-t.length;
}
void clearstring(string &s){
   if(s.ch)  {free(s.ch);   s.ch=NULL; }
    s.length = 0;
}
void concat(string &a,string b,string c){
    if(a.ch)   free(a.ch);
    if(!(a.ch=(char*)malloc((b.length+c.length)*sizeof(char))))  exit(0);
    for(int i=0;i<b.length;i++){
        a.ch[i]=b.ch[i];
    }
    a.length=b.length+c.length;
    for(int i=0;i<c.length;i++){
        a.ch[i+b.length]=c.ch[i];
    }

}
int index(string s,string t,int pos){//   求子串位置的定位函数
  //返回子串t在主串s中的第pos个字符之后的位置
  int i=pos,j=1;
  char *a=s.ch,*b=t.ch;
  while(i<s.length&&i<=t.length){
    if(*a==*b)   {i++; j++;}
    else {i=i-j+2; j=1;}
  }
  if(j>t.length)  return i-t.length;
  else return 0;

}


main(){
 string a,b,c;
 char m[100],n[100];
 gets(m);  gets(n);
 strassign(b,m);  strassign(c,n);

 printf("b的长度为%d\n",b.length);
 printf("c的长度为%d\n",c.length);
 printf("b和c的比值为%d\n",strcompare(b,c));
 concat(a,b,c);
 puts(a.ch);
 system("pause");
}

 

串的基本操作

标签:pos   size   class   turn   insert   pre   返回   ras   --   

原文地址:https://www.cnblogs.com/xiaoqiz/p/10849904.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!