資料結構串的基本操作--賦值,列印,連線
阿新 • • 發佈:2018-12-17
//#include<iostream> #include<stdio.h> #include<stdlib.h> #include<string> #include<string.h> using namespace std; struct String { char *ch; int length; }; typedef String* Str; bool Assgin_string(Str &s, char *chars); void PrintStr(Str s); void ConcatStr(Str s,Str str1); bool Assgin_string(Str &s, char *chars) { s=(String*)malloc(sizeof(String)); if (s->ch) free(s->ch); int len=0; char *c=chars; //cout<<c; while(*c) { ++len; ++c; } //cout<<"..."<<len<<chars<<"..."<<endl; if(len==0) { s->ch=NULL; s->length=0; return false; } else { s->ch=(char*)malloc((len+1)*sizeof(char));///cout<<"NULL"; for(int i=0;i<len;i++) { s->ch[i]=chars[i]; //cout<<c[i]<<endl; } s->length=len; return true; } return false; } void PrintStr(Str str) { if (str->length) { for (int i = 0; i < str->length;i++) { printf("%c", str->ch[i]); } printf("\n"); } } void ConcatStr(Str s,Str str1) { int len=s->length+str1->length+1; /*if(s->ch) free(s->ch);*/ Str tmp=(String*)malloc(sizeof(String)); tmp->ch=s->ch; s->ch=(char*)malloc(sizeof(char)*len); for(int i=0;i<s->length;i++) { s->ch[i]=tmp->ch[i]; } for(int i=s->length;i<len-1;i++) { s->ch[i]=str1->ch[i-s->length]; } s->length=len; printf("新增完成\n"); } int main() { Str s; char * c="aaa"; Assgin_string(s,c); PrintStr(s); //free(c); Str news; char * cc="aaacc"; Assgin_string(news,cc); ConcatStr(news,s); PrintStr(news); return 0; }
僅供自己學習記錄