Così funziona:
codice:
#include <stdio.h>
int main()
{
char words[30]; //dichiaro l'array principale
char convert[30]; //array per copiare
int i = 0; //contatore array principale
int j = 0; //contatore array copiato
printf("Inserisci una frase con parole divise da '.':\n");
scanf("%s", words); //inserisco la frase
while (words[i] != '\0')
{
while ((words[i] != '.') && words[i] != '\0')
{
convert[j] = words[i]; //passo i caratteri dall'array principale in quello del copiato fino al '.'
++i;
++j;
}
j--;
while (j >= 0)
{
printf("%c", convert[j]); //scrivo al contrario la parola fino al punto
--j;
}
printf("%c", words[i]); //stampo il punto
if(words[i] == '\0') break;
++i;//incremento per passare al carattere dopo il punto
j=0;
}
return 0;
}
Il problema stava nel fatto che l'ultima parola non termina con un punto, ma con il carattere '\0' (terminatore della stringa), e questo nel codice non veniva considerato.