为什么 fputs 和 fprintf 反转流顺序
why fputs and fprintf reverse stream order
我不明白为什么 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把stream放在forward中支持可变参数,但是为什么fputs系列不保持一致性
???
因为这些东西是几十年前写的,所以一般来说这只是历史学家感兴趣的问题:-)
可能只是一个设计决定(或缺乏决定)导致他们变成这样,并且由于 ISO 重视向后兼容性,他们从未改变过它。
可能是先写了puts
,到了写fputs
的时候,开发者只是简单地剪切'n'粘贴了它, 将新参数添加到最后。即使 printf/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把stream放在forward中支持可变参数,但是为什么fputs系列不保持一致性 ???
因为这些东西是几十年前写的,所以一般来说这只是历史学家感兴趣的问题:-)
可能只是一个设计决定(或缺乏决定)导致他们变成这样,并且由于 ISO 重视向后兼容性,他们从未改变过它。
可能是先写了puts
,到了写fputs
的时候,开发者只是简单地剪切'n'粘贴了它, 将新参数添加到最后。即使 printf/fprintf
存在相同的情况,由于需要将可变参数列表放在末尾,这也是不可能的。
但是,撇开假设不谈,既然我们心爱的丹尼斯走了,我们可能永远不会知道实际原因..