Mam problem z zadaniem, którego treść i rozwiązanie załączam poniżej. Problem polega na tym, że program się kompiluje, nie pokazuje błędów, natomiast wywala go podczas wyświetlania. Byłbym wdzięczny za sprawdzenie poprawności.
Napisz funkcję:
char* string_merge(char *, char *);
która sklei ze sobą dwa łańcuchy biorąc na przemian po jednym znaku z każdego łańcucha i umieści w nowej dynamicznie alokowanej tablicy znaków, do której zwróci wskaźnik. Należy wziąć po tyle znaków ile jest w krótszym łańcuchu.
char *string_merge(char *tab1, char *tab2)
{
int i=0;
int j=0;
char *tab=(char*)malloc(2*sizeof(tab1));
if(sizeof(tab2)>sizeof(tab1))
{
while(*(tab1+j)!=EOF)
{
tab[i]=tab1[j];
tab[i+1]=tab2[j];
i+=2;
j++;
}
}
else
{
while(*(tab2+j)!=EOF)
{
tab[i]=tab2[j];
tab[i+1]=tab1[j];
i+=2;
j++;
}
}
return tab;
}
int main()
{
int i;
char *tab1="kotek";
char *tab2="pawi";
char *tab;
tab=string_merge(tab1,tab2);
for(i=0;i<8;i++)
{
printf("%s", *(tab+i));
}
free(tab);
return 0;
}