write bekommt die zu schreibende Datei als file descriptor übergeben. Einen solchen bekommt man zum Beispiel mit open(2).
write gehört zum POSIX-Standard, ist also Bestandteil des Betriebssystems. Betriebssysteme, die nicht POSIX-konform sind, kennen diese Funktion deshalb vielleicht nicht.
Das write zum Betriebssystem gehört, erkennt man auch daran, dass die Funktion im Abschnitt 2 der man-pages dokumentiert ist, anstatt, wie sonstige Funktionen, im Abschnitt 3.
fwrite bekommt die zu schreibende Datei als Zeiger auf eine FILE-Datenstruktur übergeben. Eine solche bekommt man zum Beispiel mit fopen(3).
fwrite ist Bestandteil der C-Standardbibliothek. Die Funktion sollte deshalb überall dort verfügbar sein, wo es eine C-Entwicklungsumgebung gibt.