il vettore è un vettore di puntatori a struct, non conoscendo la dimensione dello stesso prima di aver letto il file, non puoi definirlo in modo statico. Quindi devi allocarlo a run-time solo dopo aver letto la dimensione dello stesso dal file in questione

La stringa, allo stesso modo, non ha una dimensione definita. Potrebbe essere lunga un carattere o mille. Per non sprecare memoria quindi la leggi interamente, la metti in una stringa ausiliaria che è lunga 1024 (ma puoi farla lunga a scelta) e poi tramite strlen ne ricavi la dimensione reale (strlen misura da inizio stringa a carattere di terminazione '\0') e la memorizzi là dove deve stare

se ti servissero dettagli sulle varie funzioni qui

se hai dubbi ti consiglio di studiarti più a fondo la gestione dei file e dell'allocazione dinamica prima di cimentarti con questo programma