串结构练习——字符串连接(串)

时间:2022-08-09 15:08:22

Think:
方法1:建立三个串, 2个串用来储存原始, 第三个串用来储存结果
方法2:建立两个穿, 连接后 将其中一个串进行释放

Problem Description

给定两个字符串string1和string2,将字符串string2连接在string1的后面,并将连接后的字符串输出。
连接后字符串长度不超过110。
Input

输入包含多组数据,每组测试数据包含两行,第一行代表string1,第二行代表string2。

Output

对于每组输入数据,对应输出连接后的字符串,每组输出占一行。

Example Input

123
654
abs
sfg
Example Output

123654
abssfg

#include<bits/stdc++.h>

using namespace std;
#define INF 0x3f3f3f

typedef struct
{
char *ch;
int length;
}String;

int initstring(String &S)//初始化
{
S.ch = (char *)malloc(INF * sizeof(char));
if (!S.ch) exit(0);
S.length = 0;
return 1;
}
void StrAssign(String &S, char str[])
{
int len = 0;
while(str[len ++] != '\0');
for (int i = 0;i <= len - 2;i ++)
{
S.ch[i] = str[i];
S.length ++;
}
}


void Concat(String &T,String &A, String &B)
{
int i;
int k = 0;
for (i = 0;i <= A.length - 1;i ++)
T.ch[k ++] = A.ch[i];
for (i = 0;i <= B.length - 1;i ++)
T.ch[k ++] = B.ch[i];
T.length = A.length + B.length;
}

void Display(String &T)
{
int i;
for (i = 0;i <= T.length - 1 ;i ++)
{
if (i == T.length - 1)
cout << T.ch[i] << endl;
else
cout << T.ch[i];
}
}

int main()
{
char str1[126], str2[126];
while(cin >> str1 >> str2)
{
String A;
String B;
String T;
initstring(A);
initstring(B);
initstring(T);
StrAssign(A, str1);
StrAssign(B, str2);
Concat(T, A , B);
Display(T);
}
}