串比较&&串连接

1.串比较

比较的是ASCII值和串的长度

可以导出字典顺序

int strCompare(StrNonfix s1,StrNonfix s2){
    for(int i=0;i<s1.length&&i<s2.length;i++){
        if(s1.ch[i]!=s2.ch[i]){
            return s1.ch[i]-s2.ch[i];
        }
    }
    return s1.length-s2.length;
}

2.串连接

int concat(StrNonfix &str,StrNonfix str1,StrNonfix str2){
    if(str.ch){
        free(str.ch);
        str.ch=NULL;
    }
    str.ch=(char*)malloc(sizeof(char)*(str1.length+str2.length+1));
    if(!str.ch){
        return 0;
    }
    int i=0;
    //(0~~str1.length-1) i到str1.length的位置 
    while(i<str1.length){
        str.ch[i]=str1.ch[i];
        i++;
    } 
    int j=0;
    //(str1.length~~str2.length,最后那个位置存'\0' 
    while(j<=str2.length){
        str.ch[i+j]=str2.ch[j];
        ++j;
    }
    str.length=str1.length+str2.length;
    return 1;
}

3.求子串

int subString(StrNonfix& substr,StrNonfix str,int pos,int len){
    if(pos<0 ||pos>=str.length||len<0||len>str.length-pos){
        return 0;
    }
    if(substr.ch){
        free(substr.ch);
        substr.ch=NULL;
    }
    if(len == 0){
        substr.ch=NULL;
        substr.length=0;
         return 1;
    }else{
        substr.ch=(char*)malloc(sizeof(char)*(len+1));
        int i=pos;
        int j=0;
        while(i<pos+len){
            substr.ch[j]=str.ch[i];
            ++i;
            ++j;
        }
        substr.ch[j]='\0';
        substr.length=len;
        return 1;
    }
}

 

posted on 2020-06-25 14:50  二进制dd  阅读(427)  评论(0编辑  收藏  举报

导航