Wygląda na to, że nie kończysz odwróconego stringa nullem. Zaczynasz kopiować ze starego stringa od przedostatniego znaku, po skopiowaniu wszystkich liter nie kończysz nowego stringa nullem. W wyniku tego wypisuje Ci wszystko od początku stringa do pierwszego spotkanego nulla, który znajduje się poza tablicą i dlatego te kwiatki się wyświetlają.
void reverse(char string[])
{
char *newstring;
//char tablica[MAX];
//zmienna zliczajaca litery
int i=0;
//zliczam litery
while(string[i]!='\0')
i++;
printf("Liczba liter wynosi: %d\n", i);
newstring = (char*)malloc((i+1)* sizeof(char));
i--;
int j=0, k=0;
for(j=i; j>=0; j--)
{
newstring[k]=string[j];
++k;
}
newstring[++i]='\0';
printf("Po odwroceniu wyraz ma postac: %s\n", newstring);
}
A tak poza tym:
- jeśli w wyrazie "kowalski" jest 8 liter, to za pomocą malloc() musisz przydzielić pamięć na 9 znaków (8 liter + NULL).