a) root kan altijd overal bij.
b) Je programma segfault omdat je een file opent, wat mislukt, en vervolgens ga je met een NULL pointer aan de slag (printf(file....)).
Zie ook m'n opmerkingen mbt veilig programmeren.. Ga er niet vanuit dat het openen van een object ook daadwerkelijk altijd lukt. Een controle op "file=fopen()" vertelt je dat het mislukt is. Dan zijn er andere functies die je aan moet roepen om er achter te komen waarom het mislukte (foutafhandeling).
man fopen:
RETURN VALUES
Upon successful completion fopen(), fdopen() and freopen() return a FILE pointer. Otherwise, NULL is returned and the global variable errno is set to indicate the error.