f
在C标准库函数名称中代表什么?我注意到很多函数的名字都有f
,这对我来说并不合理。
例如:fgets
,fopen
,printf
,scanf
,sqrtf
等。
答案 0 :(得分:46)
一般来说,你的问题过于笼统,但我可以解释几个例子。
fgets
,fopen
,fclose
,... - “f”代表“文件”。这些函数接受或返回FILE *
指针,而不是像POSIX函数那样的文件号。printf
,scanf
,... - “f”代表“格式化”。这些函数接受格式字符串。fprintf
,fscanf
- 这是上述两种情况的组合。sinf
,cosf
,... - “f”代表float
(区别于double
替代品)。请注意,与f
中的1.5f
一样后缀浮点文字非常适合。free
,floor
或setbuf
(“设置缓冲区”),其中“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)
我认为fgets
和fopen
f
代表档案。
对于printf
和scanf
,我认为f
代表格式化。这至少部分得到Wikipedia article on scanf的支持。
答案 4 :(得分:1)
在stdio
库的功能中,f
,fread
,fprintf
等内容之前的fwrite
代表'文件&#39 ;. f
和printf
等函数末尾的scanf
代表'格式'。因此printf是FORMATTED打印,这意味着您可以在其中使用谎言%d
和%s
。
在数学函数中,后缀f
通常表示float
。