The reason is most likely historical: the fopen function was in an early version of the K & R language, and enum was added to the language only for the ANSI standard.
By the time enum was added, the language was widely used that changing the signature of such an important function was impractical.
source share