串比较&&串连接
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; } }