串的基本操作

Posted xiaoqiz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了串的基本操作相关的知识,希望对你有一定的参考价值。

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");
}

 

以上是关于串的基本操作的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段15——git命令操作一个完整流程

VSCode自定义代码片段15——git命令操作一个完整流程

第四章 串的基本操作数据结构

详解 Scala 模式匹配

高效操作字串的String Reference类

VSCode 如何操作用户自定义代码片段(快捷键)