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!!!