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

问题描述 投票:15回答:5

f以C标准库函数的名义代表什么?我注意到很多功能在他们的名字中都有一个f,这对我来说并没有多大意义。

例如:fgetsfopenprintfscanfsqrtf等。

c naming libc
5个回答
48
投票

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

  • fgetsfopenfclose,... - “f”代表“文件”。这些函数接受或返回FILE *指针,而不是像POSIX函数那样的文件号。
  • printfscanf,... - “f”代表“格式化”。这些函数接受格式字符串。
  • fprintffscanf - 这是上述两者的组合。
  • sinfcosf,... - “f”代表float(以区别于double替代品)。请注意,这与使用f中的1.5f后缀浮点文字非常吻合。
  • 最后,作为Deduplicator points out,有一些名字,如freefloorsetbuf(“set buffer”),其中“f”只是作为自然语言字符出现。

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


8
投票

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

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

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

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

结合起来,你得到的结果如下:

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

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

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

6
投票

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

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


4
投票

我的印象是,对于fgetsfopenf代表档案。

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


1
投票

stdio库中的函数中,ffreadfprintf等之前的fwrite代表'file'。像fprintf这样的函数末尾的scanf代表'格式'。因此printf是FORMATTED打印,这意味着你可以使用谎言%d%s

在数学函数中,f的后缀通常意味着float

© www.soinside.com 2019 - 2024. All rights reserved.