Il file è di testo vero?
Date le dimensioni del file la cosa si complica non poco....
La cosa più banale è creare un contatore e prima contare quanti caratteri ci sono, poi allocare la memoria e riempirla, facendo tipo:
codice:
int count = 0, i = 0;
char temp;
char* v;
while ((fscanf (f, "%c", &temp)) == 1)
count++;
rewind (f);
v = (char*) malloc (count*sizeof(char));
while ((fscanf (f, "%c", &v[i])) == 1)
i++;
Altrimenti ti crei dinamicamente un array di caratteri e man mano che lo vai a riempire controlli sempre che l'indici attuale superi la dimensione prefissata.... Quando ciò avviene, allochi un array più grande, copi il contenuto di quello vecchio in quello nuovo, cancelli quello vecchio e prosegui sempre in questo modo!