Salve a tutti e vivissimi complimenti per il portale.
Leggendo le specifiche di un programma richiesto mi son imbattuto per la prima volta in una problematica riguardo la lettura di più stringhe da file.

codice:
*         carica da un file di testo un elenco di modelli di autovetture; per 
*         ogni modello di autovettura le informazioni sono: marca, modello e
*         prezzo 
*         visualizza a video l'elenco caricato
Il file (auto.txt) a cui la traccia fa riferimento è composto da:

codice:
3
!Opel!Astra!18000.00!
!Fiat!Punto!13500.00!
!Audi!A4!32000.00!
...le cui specifiche sono:

codice:
*         il file di testo contentente l'elenco è strutturato come segue:
*         la prima riga contiene un numero intero che rappresenta quanti record
*         sono presenti nell'elenco salvato su file;
*         su ogni riga c'è un record riportato secondo la seguente sintassi:
*         !Campo_Marca!Campo_Modello!Campo_Prezzo!
*         la dimensione massima dell'elenco gestito è pari a 100
Quel che mi preme risolvere è la scrittura del sottoprogramma che legge il contenuto da file.
Quel pò fatto fin ora è:

codice:
void load(char lista[], int *dim)
{
   FILE *fp;
   /* apro il file */
   fp=fopen("auto.txt", "r");
   /* leggo la dimensione e la stampo come test*/
   fscanf(fp, "%d", dim);
   printf("%d", *dim);

   fclose(fp);
}
Qualcuno potrebbe aiutarmi a colmare questa lacuna?
PS: Ho pensato ad un array di stringhe, ma non son riusito ad implementare correttamente il codice.

Ringraziamenti anticipati anche solo per l'attenzione, vi.