"f"在C标准库函数名中代表什么?

What does "f" stand for in C standard library function names?

f在C标准库函数的名称中代表什么?我注意到很多函数的名称中都有一个 f,这对我来说真的没有意义。

例如:fgetsfopenprintfscanfsqrtf等。

前导f代表file,尾随formatted; 例如,sscanf 用于扫描 s 字符串以获取格式指定的模式中的值,而 fprintf 将格式化文本打印到文件。

编辑:哦,还有来自 math.h 的数学函数,它们将具有像 atanf 这样的类型后缀,用于计算浮点值的 arcustangens。

我的印象是 fgetsfopen f 代表文件。

对于printfscanf我认为f代表格式化。 Wikipedia article on scanf.

至少部分支持这一点

前导的 f 指的是函数操作的类型:

  • fgets:在 FILE * 句柄上使用 gets 而不仅仅是 stdin
  • fopen:打开一个文件,return它作为FILE *(而不是原始open所做的文件描述符)

尾随的 f 表示它使用格式化字符串:

  • printf:按照格式说明符打印出来
  • scanf:按照格式读入

结合起来,你会得到类似的东西:

  • fprintf:根据格式说明符
  • 打印到特定的FILE *

当您考虑 math.h 函数之类的东西时,尾随的 f 表示特定函数对 float 类型的操作数进行操作,如下所示:

  • powf:取floats
  • 的指数
  • powl:取long doubles
  • 的指数

你的问题笼统地说太笼统了,但我可以解释几个例子。

用单个字母表示参数类型的前缀或后缀名称的传统在 C 中是必需的,但由于重载而在 C++ 中已过时。实际上,C++ 中的重载由编译器自动将这些后缀再次添加到名为 name mangling.

的进程生成的符号中。

stdio 库的函数中,前面的 ffreadfprintffwrite 等中代表 'file'。 printfscanf 等函数末尾的 f 代表 'format'。因此 printf 是格式化打印,这意味着您可以在其中使用 %d%s 等东西。

在数学函数中,后缀 f 通常表示 float