Facendo ulteriori riflessioni sono giunto ad un codice più o meno buono.
C'è però ancora un inconveniente fastidioso e riguarda lo spazio.

Considerando il file auto.txt composto da:

codice:
3
!Opel!Astra!18000.00!
!Fiat!Punto!13500.00!
!Alfa Romea!Brera!32000.00!
Ed il codice:
codice:
void load(char lista[][max_dim], int *dim)
{
   FILE *fp;
   int i, j;
   fp=fopen("auto.txt", "r");
   fscanf(fp, "%d", dim);
   printf("%d", *dim);
   for(i=0; i<*dim; i++)
   {
         fscanf(fp, "%s", &lista[i]);
   }
   fclose(fp);
   for(i=0; i<*dim; i++)
   {
         printf("%s\n", lista[i]);
   }
}
Il programma stampa:

codice:
!Opel!Astra!18000.00!
!Fiat!Punto!13500.00!
!Alfa

Premere un tasto per continuare . . .
Come posso risolvere l'errore annettendo all'array di stringhe anche il carattere di spazio?