Мне всегда казалось странным, что функция C "fopen" принимает в качестве второго аргумента "const char *". Я бы подумал, что было бы проще прочитать ваш код и реализовать библиотечный код, если в stdio.h были бит-маски, такие как "IO_READ" и т.д., Чтобы вы могли делать такие вещи, как:
FILE* myFile = fopen("file.txt", IO_READ | IO_WRITE);
Есть ли программная причина для того, как это происходит на самом деле, или это просто исторический? (т.е. "Это так, как есть".)
EDIT Спасибо за объяснения всех. Правильный ответ, вероятно, относится к тем, которые были даны.