Cześć robie zadanie String merge i mam pytanie program mi działa przy ciagu znaków 5 6 a kiedy ten ciąg jest wiekszy zaczynam mi krzaczec znaki dlaczego mój kod jest błedny czy cos nie wiem o char i jego długości znaków
#include <iostream>
#include <cstring>
using namespace std;
#define T_SIZE 1001
char* string_merge(char *S1, char *S2) {
int dl1 = strlen(S1);
int dl2 = strlen(S2);
if(dl1 > dl2) {
int n = 2*dl2;
char *wynik = new char [(2*dl2)+1];
int k=0;
for(int i=0; i<n; i++) {
if(i%2 == 0) {
wynik[i]+=S1[k];
}
else {
wynik[i]+=S2[k];
k++;
}
}
return wynik;
}
else if(dl1 < dl2) {
int n = 2*dl1;
char *wynik = new char [2*(dl1+1)];
int k=0;
for(int i=0; i<n; i++) {
if(i%2 == 0) {
wynik[i]+=S1[k];
}
else {
wynik[i]+=S2[k];
k++;
}
}
return wynik;
}
else if (dl1 == dl2) {
int n = dl1+dl2;
char *wynik = new char [n+1];
int k=0;
for(int i=0; i<n; i++) {
if(i%2 == 0) {
wynik[i]+=S1[k];
}
else {
wynik[i]+=S2[k];
k++;
}
}
return wynik;
}
}
int main(){
int t,n;
char S1[T_SIZE], S2[T_SIZE], *S;
cin >> t; /* wczytaj liczbę testów */
cin.getline(S1,T_SIZE);
while(t){
cin.getline(S1,T_SIZE,' ');
cin.getline(S2,T_SIZE);
S=string_merge(S1,S2);
cout << S << endl;
delete[] S;
t--;
}
return 0;
}