Yerf!
while(feof(fd) != EOF) {
feof(): 0 // Zitat aus
man feof
"feof liefert ein Ergebnis ungleich 0, wenn die Dateiendekennung gesetzt ist."
Was mir hier auffällt: EOF ist eine Konstante für die EOF-Markierung, um diese direkt Abfragen zu können (weis jetzt nicht den genauen Wert).
Müsste das nicht while(feof(fd) == 0) heißen?
Gruß,
Harlequin