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:
Come qui sopra funziona con la sola prima parola della stringa.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 ); }
Se aggiungo questo nel main():
non funziona. Vi sarei molto grato se poteste indicarmi la soluzione. Grazie!!!codice:while ( tokenPtr != NULL ) { tokenPtr = strtok(NULL, " "); printLatinWord(tokenPtr, s); }

Rispondi quotando

