What does f stand for in the name of C standard library functions? I have noticed that a lot of functions have an f in their name, and this does not really make sense to me.
For example: fgets, fopen, printf, scanf, sqrtf and so on.
Your question in general is too general but I can explain a few examples.
fgets,fopen,fclose, … — The ”f“ stands for “file”. These functions accept or return aFILE *pointer as opposed to a file number as the POSIX functions do.printf,scanf, … — The ”f“ stands for “formatted”. These functions accept a format string.fprintf,fscanf— This is a combination of the above two.sinf,cosf, … — The “f” stands forfloat(to distinguish from thedoublealternatives). Note that this fits quite nicely with suffixing floating point literals with anfas in1.5f.- Finally, as Deduplicator points out, there are some names such as
free,floororsetbuf(“set buffer”) where the “f” simply appears as a natural language character.
The tradition of pre- or suffixing names with single letters that indicate the type of the arguments is a necessity in C that has become obsolete in C++ thanks to overloading. Actually, overloading in C++ works by the compiler automatically adding those suffixes again under the hood to the generated symbols by a process called name mangling.
The leading f refers to the type that function operates on:
fgets: usegetson aFILE *handle instead of juststdinfopen: open a file, and return it as aFILE *(instead of a file descriptor which the originalopendoes)
The trailing f means that it uses a formatting string:
printf: print out according to the format specifierscanf: read in according to the format
And combined, you get things like:
fprintf: print out to a particularFILE *according to the format specifier
When you consider things like the math.h functions, then the trailing f designates that the particular function operates on operands of type float like so:
powf: take the exponent offloatspowl: take the exponent oflong doubles
A leading f stands for file, a trailing one stands for formatted;
for example, sscanf is used to scan strings for values in a pattern as specified by a format, whilst fprintf prints formatted text to a file.
EDIT: Oh, and then there's math functions from math.h that will have type suffixes like atanf for calculating the arcustangens for float values.
I am under the impression that for fgets and fopen the f stands for file.
For printf and scanf I believe that the f stands for formatted. This is at least partially supported by the Wikipedia article on scanf.
In functions from the stdio library, the preceeding f in things like fread, fprintf, fwrite, etc. stands for 'file'. The f at the end of functions like printf and scanf stands for 'format'. Thus printf is FORMATTED printing, meaning that you can use things liek %d and %s in it.
In math functions a suffix of f usually means float.
来源:https://stackoverflow.com/questions/27949512/what-does-f-stand-for-in-c-standard-library-function-names