f
以C标准库函数的名义代表什么?我注意到很多功能在他们的名字中都有一个f
,这对我来说并没有多大意义。
例如:fgets
,fopen
,printf
,scanf
,sqrtf
等。
一般来说,你的问题太笼统了,但我可以解释几个例子。
fgets
,fopen
,fclose
,... - “f”代表“文件”。这些函数接受或返回FILE *
指针,而不是像POSIX函数那样的文件号。printf
,scanf
,... - “f”代表“格式化”。这些函数接受格式字符串。fprintf
,fscanf
- 这是上述两者的组合。sinf
,cosf
,... - “f”代表float
(以区别于double
替代品)。请注意,这与使用f
中的1.5f
后缀浮点文字非常吻合。free
,floor
或setbuf
(“set buffer”),其中“f”只是作为自然语言字符出现。使用单个字母预先或后缀名称来表示参数类型的传统是C中的必要条件,由于过载,C语言已经过时了。实际上,C ++中的重载是由编译器通过名为name mangling的进程自动将这些后缀再次添加到生成的符号中。
前导f指的是函数操作的类型:
fgets
:在gets
手柄上使用FILE *
而不仅仅是stdin
fopen
:打开一个文件,并将其作为FILE *
(而不是原始open
所做的文件描述符)返回尾随f表示它使用格式化字符串:
printf
:根据格式说明符打印出来scanf
:根据格式读入结合起来,你得到的结果如下:
fprintf
:根据格式说明符打印到特定的FILE *
当你考虑math.h
函数之类的东西时,尾随的f表示特定函数对float
类型的操作数进行操作,如下所示:
powf
:取float
s的指数powl
:取long double
s的指数一个领先的f
代表file
,一个尾随的代表formatted
;例如,sscanf
用于扫描s
trings以获取格式指定的模式中的值,而fprintf
将格式化文本打印到文件中。
编辑:哦,然后有来自math.h
的数学函数,它将具有像atanf
这样的类型后缀,用于计算浮动值的arcustangens。
我的印象是,对于fgets
和fopen
,f
代表档案。
对于printf
和scanf
,我认为f
代表格式化。这至少部分得到了Wikipedia article on scanf的支持。
在stdio
库中的函数中,f
,fread
,fprintf
等之前的fwrite
代表'file'。像f
和printf
这样的函数末尾的scanf
代表'格式'。因此printf是FORMATTED打印,这意味着你可以使用谎言%d
和%s
。
在数学函数中,f
的后缀通常意味着float
。