W przypadku tablicy źródłowej nie gra to roli, czy będzie null na końcu, czy nie, bo może go nie być... Tą tablicę traktujemy jako zbiór znaków, a nie jako string. Jednak żeby nulla na końcu nie było, musimy ją wypełnić mniej więcej w taki sposób:
new tablica[] = {'a', 'b', 'c', 'd', 'e'};
I absolutnie nic tu się złego nie stanie, jeśli każdy ze znaków będziemy używać osobno, a nie całość jako string. Nie możemy tego potraktować formatem, bo nam ten null na końcu wstawi (albo przynajmniej spróbuje).
Prawdziwy problem jest tu:
new tekst[9];
for(new i=0; i<=8; i++)
Jeśli tablicę docelową również masz zamiar użyć tak, jak źródłową, czyli każdy znak z osobna to nie ma się tu do czego przyczepić, ale jej nazwa wskazuje co innego...
Wypełniasz ją całą tekstem i na końcu nie ma miejsca na znak null. Pętla powinna wyglądać tak:
new tekst[9];
for(new i=0; i<8; i++)
a po pętli powinno znaleźć się jeszcze:
tekst[8] = '^0'
I taka przestroga na przyszłość, jeśli chcesz dodać tego nulla na końcu stringa to nie używaj nigdy:
tekst[8] = 0
nie chodzi tu o to, że to nie zadziała, bo zrobi dokładnie to co wyżej... chodzi o to, że poprzedni zapis od razu sugeruje, że operujemy na tekście, a nie na liczbach, więc jest od razu czytelniejszy nie tylko dla osoby trzeciej, ale też dla Ciebie gdy za tydzień, miesiąc, rok czy dwa zaglądniesz do kodu i będziesz się zastanawiał co tutaj miałeś na myśli.