Już dostałeś 3 rozwiązania, albo i więcej.
Z kolei w tym przykładzie:
Kopiuj
while(tab3[i] = tab1[i++])
{
tab3[i - 1] = ' ';
}
Powinien pojawić się Access Violation. Bo jeżeli i == 0 to próbujesz do tab[0 - 1] = ' '; == tab[-1] = ' '; a to nie jest prawdą.
Jeżeli znowu nie zerujesz i, to dopisujesz dalej tylko spacje. Jeżeli byś wyzerował i a raczej ustawił na i = 1, to znowu uzupełnisz całą tablicę oprócz pierwszego znaku spacjami.
Przeglądnij kod i postaraj się go zrozumieć, a potem jak będziesz chciał spróbuj to zrobić za pomocą pętli for tak jak ty to chciałeś
Kopiuj
#include <stdio.h>
int main(void)
{
int i = 0, j = 0;
char tab1[] = {"Ogniem i mieczem"};
char tab2[] = {"Patykiem i woda"};
char tab3[40];
while(tab3[i] = tab1[i++]);
tab3[i - 1] = ' ';
while(tab3[j + i] = tab2[j++]);
printf("%s", tab3);
return 0;
}