串和串的赋值操作

Posted jcahsy

tags:

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

1.串的存储结构

typedef struct{
    char str[MaxSize+1];//末尾+‘‘ 
    int length;
}Strfix;
//变长存储结构 
typedef struct{
    char *ch;
    int length;
}StrNonfix;
    StrNonfix S;
    S.length=10;
    S.ch=(char*)malloc((S.length+1)*sizeof(char));
    S.ch[8]=J;
    cout<<S.ch[8]<<endl;
    free(S.ch);//free函数是free首地址,malloc给的就是首地址 

2.串的赋值操作

int strAssign(StrNonfix& str,char* ch){
    //释放原有的内容 
    if(str.ch){
        free(str.ch); 
    } 
    int len=0;
    char *c=ch;
    //确定赋值目标串的长度 
    //遇到‘‘就结束 
    while(*c){
        ++len;
        ++c;
    }
    //目标字符串没有除‘‘以外的字符 
    if(len == 0){
        str.ch=NULL;
        str.length=0;
        return 1;
    }else{
        str.ch=(char*)malloc(sizeof(char)*(len+1));
        //分配失败
        if(str.ch == NULL){
            return 0;
        }else{
            c=ch;
            //len+1次把‘‘赋值过去 
            for(int i=0;i<=len;++i,++c){
                str.ch[i]=*c;
            }
            str.length=len;
            return 1; 
        }
         
    }
     
} 

 

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

数据结构与算法学习笔记串和数组

Java编程实现字符串的模式匹配

用于测试非空字符串和非空字符串的兼容 SQL

第四章 串和数组 (主要kmp算法)

MySQL中如何排除null和空字符串的条件

回文串