串结构练习——字符串连接
Time Limit: 1000MS Memory limit: 65536K
题目描述
给定两个字符串string1和string2,将字符串string2连接在string1的后面,并将连接后的字符串输出。
连接后字符串长度不超过110。
输入
输入包含多组数据,每组测试数据包含两行,第一行代表string1,第二行代表string2。
输出
对于每组输入数据,对应输出连接后的字符串,每组输出占一行。
示例输入
123 654 abs sfg
示例输出
123654 abssfg
#include <iostream> #include <algorithm> #include <cstring> #include <cstdio> #define sqtrmax 110 using namespace std; typedef struct { char *data; int length; } sqtr; void StrAssign (sqtr &S, char *chars); void Concat (sqtr &T,sqtr S1,sqtr S2); void StrOutput(sqtr S) ; int main() { int i=0,j; sqtr S,T,S1; char c[110],t[110],b,a; while(cin>>c) { cin>>t; StrAssign(S,c); StrAssign(T,t); Concat (S1,S,T); StrOutput(S1); cout<<endl; } } void StrAssign (sqtr &S, char *chars) { int i; S.data=(char *)malloc(sqtrmax *sizeof(char)); if(!S.data) exit(0); for(i=0; chars[i]!='\0'; i++) { S.data[i]=chars[i]; //cout<<S.data[i]; } S.length=i; S.data[i]='\0';//注意 } void Concat (sqtr &T,sqtr S1,sqtr S2) { T.length=S1.length+S2.length+1; T.data=(char *)malloc(S1.length+S2.length *sizeof(char)); int j=0,k=0; while(S1.data[j]!='\0') T.data[k++]=S1.data[j++]; j=0; while(S2.data[j]!='\0') T.data[k++]=S2.data[j++]; T.data[k]='\0'; } void StrOutput(sqtr S) { int i=0; while(i<S.length-1)/***不输出‘/0’**/ { cout<<S.data[i]; i++; } }