Teoricamente si, ma vorrei limitare al massimo lo spreco di memoria...Per rilocarla dinamicamente potrei fare una cosa del genere?

codice:
...FILE f passato come parametro...  
int L=4096, rec;  
char* s= NULL;   

fgets(s, L, f);  
rec = strlen(s);  
s = realloc(s, rec);