Buongiorno a tutti!
Sono nuovo del forum e spero di scrivere bene il messaggio!
Sto studiando il C dal libro "C Corso completo di programmazione" di Deitel & Deitel. Sono arrivato al capitolo delle stringhe. Un esercizio a fine capitolo mi chiede di:
- inserire una frase da tastiera in un vettore;
- suddividerla in token;
- per ogni parola, mettere la prima lettera in fondo alla parola e aggiungere ay alla fine(esempio: "ciao" tradotto in pig latin diventa "iaocay");
- devo fare la traduzione in pig latin per tutta la stringa inserita.
Ho scritto il programma e funziona però solo per la prima parola; non funziona per tutte la altre parole rimanenti della stringa.
Il mio programma è questo:

codice:
/* Trasformo una frase inglese in pig latin */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void printLatinWord( char *ptr );

main()
{
      char s[100];
      char *tokenPtr;
      
      printf("Enter a sentence:\n");
      gets(s);
      
      tokenPtr = strtok(s, " ");
      
      printLatinWord(tokenPtr);
      
      while ( tokenPtr != NULL )
      {
            tokenPtr = strtok(NULL, " ");
            printLatinWord(tokenPtr);
      }
      
      putchar('\n');
      putchar('\n');
      system("pause");
      
      
}

void printLatinWord( char *ptr )
{
     char say[] = "ay";
     int m, n, i;
     char c;
     
     
     n = strlen(ptr);
     m = n - 1;
     c = ptr[m - m];
     memmove(ptr, &ptr[1], m);
     ptr[m] = c;
     strcat(ptr, say);
     
     printf("%s", ptr );
     
}
Come qui sopra funziona con la sola prima parola della stringa.
Se aggiungo questo nel main():

codice:
while ( tokenPtr != NULL )
      {
            tokenPtr = strtok(NULL, " ");
            printLatinWord(tokenPtr, s);
      }
non funziona. Vi sarei molto grato se poteste indicarmi la soluzione. Grazie!!!