Leggere le parole in fila e metterle in serie

Ho bisogno del mio programma per leggere una riga di un file, quindi analizzare la linea e inserire le parole in un indice di ciascun array. L’unico problema è che non so quante parole ci sono per riga, può essere 1-6 parole per riga.

Ecco come può essere un semplice file:

arance di mele

mouse della tastiera del computer

Avrei bisogno di un array di caratteri per contenere le parole mela e arance se sto analizzando la riga 1. Esempio:

words[0][0] = "apple"; words[1][0] = "oranges"; 

Finora, ho qualcosa di simile, ma come posso farlo in modo che funzioni con meno di 6 parole per linea?

 fscanf(file, "%19[^ ] %19[^ ] %19[^ ] %19[^ ] %19[^ ] %19[^ ]", string1, string2, string3, string4, string5, string6); 

Stai leggendo l’intero file, non una linea.

Puoi fare qualcosa del genere:

 char line [128]; char *pch; char words[6][20]; // 6 words, 20 characters int x; while ( fgets ( line, sizeof line, file ) != NULL ) /* read a line */ { pch = strtok (line," ,.-"); while (pch != NULL) { strcpy(words[x], pch); pch = strtok (NULL, " ,.-"); } x++; /* At this point, the array "words" has all the words in the line */ }