“f”代表C标准库函数名称是什么?

时间:2015-01-14 18:03:18

标签: c naming libc

f在C标准库函数名称中代表什么?我注意到很多函数的名字都有f,这对我来说并不合理。

例如:fgetsfopenprintfscanfsqrtf等。

5 个答案:

答案 0 :(得分:46)

一般来说,你的问题过于笼统,但我可以解释几个例子。

  • fgetsfopenfclose,... - “f”代表“文件”。这些函数接受或返回FILE *指针,而不是像POSIX函数那样的文件号。
  • printfscanf,... - “f”代表“格式化”。这些函数接受格式字符串。
  • fprintffscanf - 这是上述两种情况的组合。
  • sinfcosf,... - “f”代表float(区别于double替代品)。请注意,与f中的1.5f一样后缀浮点文字非常适合。
  • 最后,作为Deduplicator points out,有一些名称,如freefloorsetbuf(“设置缓冲区”),其中“f”只显示为自然语言特色。

使用单个字母预先或后缀名称来表示参数类型的传统是C中的必要条件,由于重载,C语言已经过时了。实际上,C ++中的重载是由编译器通过名为name mangling的进程自动将这些后缀再次添加到生成的符号中。

答案 1 :(得分:8)

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

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

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

  • printf:根据格式说明符
  • 打印出来
  • scanf:根据格式
  • 读入

结合起来,你得到的结论是:

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

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

  • powf:取float s
  • 的指数
  • powl:取long double s
  • 的指数

答案 2 :(得分:6)

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

编辑:哦,然后来自math.h的数学函数将具有类似atanf的类型后缀,用于计算浮动值的arcustangens。

答案 3 :(得分:4)

我认为fgetsfopen f代表档案。

对于printfscanf,我认为f代表格式化。这至少部分得到Wikipedia article on scanf的支持。

答案 4 :(得分:1)

stdio库的功能中,ffreadfprintf等内容之前的fwrite代表'文件&#39 ;. fprintf等函数末尾的scanf代表'格式'。因此printf是FORMATTED打印,这意味着您可以在其中使用谎言%d%s

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