ok.
le due soluzioni hanno, come di consueto, pregi e difetti. Provo ad elencarne alcuni.
Le system call (open, close) non sono portabili su sistemi non Linux/Unix (anzi POSIX),
perciò se vuoi portare il tuo programma in altri ambienti (windows) dovrai riscriverlo.
Le funzioni di libreria fscanf e soci sono standars ANSI C quindi portabili su tutte le piattaforme.
Avrai notato che i parametri che devi apssare alle funzioni sono diversi, nel primo caso si tratta di file descriptor, nel secondo di FILE*.
In generale, se non hai esigenze specifiche le system call dovrebbero essere la scelta preferita.
Dal post originale leggo che vuoi implementare un "semplice"? client-server... per cosa? Immagino che tu voglia utilizzare dei socket...