数据结构中串的学习

#include<stdio.h>
//字符串的复制
void copy(char * str1,char * str2){
    while(*str1!='\0'&&str2!='\0'){
       *str1++=*str2++;
    }
    *str1='\0';
    //return str1;
}
//求字符串的长度
int len(char *str){
  int i=0;
  while(*str++!='\0')
      i++;
  return i;
}
//字符串的链接
int join(char *str1,char *str2){
    int m=len(str1);
    int n=len(str2);
    if(n+m>100)
        return 0;
    while(*str1!='\0')
        str1++;
    while(*str2!='\0'){
        *str1++=*str2++;
    }
    *str1='\0';
    return 1;
}
int main(){
    char str1[100],str2[50];
    gets(str1);
    gets(str2);
    if(join(str1,str2))
        puts(str1);
    else
        printf("越界了\n");
    return 0;
}

求子字符串

int Substring(char *str1,int start,int end,char *str2){
     if(start<0||end<0||start+end>len(str2))
         return 0;
     str2=str2+start;
     int i=0;
     while(*str2!='\0'&&i<end)
     {
         *str1++=*str2++;
         i++;
     }
     *str1='\0';
     return 1;
}

判断两个字符串是否相等

int equal(char *str1,char *str2){
    int m=len(str1);
    int n=len(str2);
    if(m!=n)
        return 0;
    while(*str1!='\0'){ 
        if(*str1!=*str2)
        {
            return 0;
        }
        str1++;
        str2++;
    } 
    return 1;
}

插入子字符串

int strInsert(char str1[],int pos,char str2[]){
    int m=len(str1);
    int n=len(str2);
    if(n+m>=50)
        return 0;
    for(int i=m;i>=pos;i--){
      str1[i+n]=str1[i];
    }
    for(int j=pos;j<n+pos;j++)
        str1[j]=str2[j-pos];
    str1[n+m+1]='\0';
    return 1;
}

删除字符串

char* strdelete(char *str,int pos,int len1){

     int m=len(str);
     char *str1=(char *)malloc((len1+1)*sizeof(char));
     if(len1<0||pos<0||pos>=m||pos+len1>=m)
         return 0; 
     for(int j=0;j<len1;j++){
         *str1++=str[j+pos];
     }
     for(int i=0;i<=m-len1-pos;i++){
         str[i+pos]=str[i+pos+len1];
     }
     *str1='\0';
     str1=str1-len1;
     return (str1);
}

str1的内存是什么时候释放的呢?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值