Witam, mam pewien problem
char* string_merge(char *a, char *b)
{
int j = 0;
int k = 0;
int ba = 0;
char *newa;
int lena = strlen(a);
int lenb = strlen(b);
if(lena < lenb){
ba = (lena*2);
newa = new char [ba];
}
else{
ba = (lenb*2);
newa = new char [ba];
}
for(int i = 0; i < ba; i++)
{
if(i % 2 == 0)
{
*(newa+i) = a[k];
k++;
}
else
{
*(newa+i) = b[j];
j++;
}
}
cout << newa << endl;
return newa;
}
int main()
{
char a[T_SIZE];
char b[T_SIZE];
char *s;
int n;
cin >> n;
cin.ignore();
for(int i = 0; i<n; i++)
{
cin.getline(a,T_SIZE,' ');
cin.getline(b,T_SIZE);
s = string_merge(a,b);
cout << s << endl;
delete[] s;
}
return 0;
}
Jest to rozwiązanie do zadania ze spoja.. chodzi o to że mam problem z alokacja gdyż zamiast wypisać ab wypisuje abr gdzie r jest rożnie, zmienia się domyślam się że alokuje mi na 3 elementy ale dlaczego?
Input:
4
a bb
abs sfd
ewr w
wqeqweqweq eqweqwe
Output:
ab
asbfsd
ew
weqqewqewqewqe