Почему fputs и fprintf обратный порядок потоков

Я не понимаю, почему fputs и fprintf обратный поток.

int fputs (const char * str, FILE * stream);
int fprintf (FILE * stream, const char * format, ...);
ssize_t write(int fd, const void *buf, size_t count);

Я знаю, что fprintf направляет поток вперед для поддержки переменных аргументов, но почему ряды fputs не поддерживают согласованность???

1 ответ

Решение

Поскольку эти вещи были написаны много десятилетий назад, это, как правило, представляет интерес только для историков:-)

Вероятно, это было просто дизайнерское решение (или отсутствие решения), которое заставило их быть такими, и, поскольку ISO ценит обратную совместимость, они никогда не меняли ее.

Может быть так puts было написано первым и, когда пришло время писать fputs Разработчик просто вырезал и вставил его, добавив новый параметр в конец. Даже если такая же ситуация существовала для printf/fprintf, это было бы невозможно из-за необходимости, чтобы список аргументов переменной был в конце.

Но, если оставить в стороне, теперь, когда наш любимый Деннис ушел, мы никогда не узнаем реальных причин...

Другие вопросы по тегам