c - stdio 函数(sprintf、vsprintf 和 fprintf)背后的命名约定是什么?

标签 c naming-conventions stdout

一篇文章here解释了我们许多人多年来都知道的差异。我的假设是:

  • sprintf
    • 第一个字符“s”代表字符串类型的第一个参数。
    • 最后一个字符“f”代表格式?
  • fprintf
    • 第一个字符“f”代表字符串类型的第一个参数。
    • 最后一个字符“f”代表格式?
  • printf
    • 以“”开头,没有第一个参数。
    • 最后一个字符“f”代表格式?

我认为第一个字母代表第一个参数,但是 vsprintfprintf 否认了这种说法。最后一个字母似乎意味着它需要一种格式。更不用说 U、N、C、V 和 F 的所有其他用途。

如果有人能对 stdio 中所有这些约定背后的合理性给出解释来源,那就太棒了。

奖金 - 获得对名称删除的额外尊重。

最佳答案

您需要查看的与其说是第一个字符,不如说是前缀

“原始”函数 printf 用于格式化打印。然后可以将一个或多个前缀添加到 printf 名称:

  • f:打印到FILE
  • s:打印成字符串
  • v:用va_list打印
  • n:打印给定数量的字符
  • w:打印宽字符:

所以这给了我们:

  • printf: 格式化输出到标准输出
  • fprintf:格式化打印到FILE
  • sprintf: 格式化打印成字符串
  • snprintf:格式化打印为给定字符数的字符串
  • vprintf:使用va_list格式化打印到stdout
  • vfprintf:使用 va_list 格式化打印到 FILE
  • vsprintf: 用va_list格式化打印到字符串
  • vsnprintf:使用va_list格式化打印到具有给定字符数的字符串
  • wprintf:将宽字符格式化打印到标准输出
  • fwprintf:将宽字符格式化打印到FILE
  • swprintf:将宽字符格式化打印成字符串
  • vwprintf:使用 va_list 将宽字符格式化打印到标准输出
  • vfwprintf:使用 va_list 将宽字符格式化打印到 FILE
  • vswprintf:使用va_list将宽字符格式化打印到字符串

关于c - stdio 函数(sprintf、vsprintf 和 fprintf)背后的命名约定是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40118115/

相关文章:

c - 使用 SecItemImport 导入 PKCS12

戈朗 : Child Processes become Zombies

python - 从 C++ exe 中获取输出并在 Python 中实时处理它

Python:是否可以默认使 'print' 刷新?

c - 如何重定向由 fork() 创建的子进程的 IO 并使用 exec() 函数?

c - 需要帮助为 C 中的内存匹配游戏生成随机字符

bash - 在 Bash 中命名常量的约定是什么?

c++ - C++ 中成员变量的尾随下划线

c - 作为参数传递的指针地址似乎在函数调用中发生了变化

json - 在 JSON/XML 属性中使用多个命名空间分隔符是否可以接受?