c - 为什么 fputs 和 fprintf 反转流顺序

标签 c printf fputs

我不明白为什么 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 系列不保持一致性 ???

最佳答案

因为这些东西是几十年前写的,所以一般来说这只是历史学家感兴趣的问题:-)

可能只是一个设计决定(或缺乏决定)导致他们变成这样,并且由于 ISO 重视向后兼容性,他们从未改变它。

可能是先编写了puts,然后在编写fputs 时,开发人员只是简单地剪切'n'粘贴它,将新参数附加到最后。即使 printf/fprintf 存在相同的情况,由于需要将可变参数列表放在末尾,这也是不可能的。

但是,撇开假设不谈,既然我们心爱的丹尼斯走了,我们可能永远不会知道真正的原因..

关于c - 为什么 fputs 和 fprintf 反转流顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27956340/

相关文章:

bash - 在 bash 脚本中使用 printf 格式化输出

c - 如何在 printf 中表示变量类型 unsigned long

c - Sprintf 影响格式化中使用的其他字符串吗?

c - 递归函数后在 C 中打开文件的错误文件描述符

c - 字符串数组 malloc 后出现 "error reading characters of string"错误

c - 在 malloc 中使用 sizeof(void)

c - 缓冲区溢出更改返回的地址

c - 使用 kate editor for c dev(使用 ctags 插件)

c - 我应该使用 fputs 还是 putchar?

c - 正确使用 fprintf