串和串的赋值操作
1.串的存储结构
typedef struct{ char str[MaxSize+1];//末尾+'\0' 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; //确定赋值目标串的长度 //遇到'\0'就结束 while(*c){ ++len; ++c; } //目标字符串没有除'\0'以外的字符 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次把'\0'赋值过去 for(int i=0;i<=len;++i,++c){ str.ch[i]=*c; } str.length=len; return 1; } } }