Dovrei comunque implementare due cicli annidati, l uno che legge il numero del record ( for(i=0; i<*dim; i++) ), l altro i caratteri presenti in esso, giusto?
In questo modo dovrei dichiarare la variabile lista come array di stringhe.

Ho provato in questo modo e sembra ancora che non funzioni:
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++)
   {
      j=0;
      while(fscanf(fp, "%c", &lista[i][j])!='\n' && fscanf(fp, "%c", &lista[i][j])!=EOF)
      {
         fscanf(fp, "%c", &lista[i][j]);
         j++;
      }
   }
   fclose(fp);
}
Mi scuso per la tardività intuitiva su tali cose ma è la prima volta che mi trovo a gestire questa tipologia di esercizio.