//#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;
}
僅供自己學習記錄