热血无赖开车视角:printf()函数名字中的f代表什么?

来源:百度文库 编辑:高校问答 时间:2024/03/29 17:49:45
printf大家都回用,但是谁知道为什么print后面还要跟个"f"呢?Basic中就是print,偏偏C喜欢加个f,像scanf等等,大家学C的时候有没有老师说过是为什么呢?
呵呵
能不能举个例子说明什么是非格式化的输出

确切地说,那“f”代表 “formatted”,因为那些函数在输入 / 输出的过程中进行格式化,所以结果都是已经被格式化了的(formatted)数据。

其实除了 C,还有七种语言有 printf( ) 或类似的函数 / 机制:
1)C++(当然啦)
2)Java(刚补上)
3)Python(通过“%”操作符)
4)PHP
5)Perl
6)Octave
7)Maple

确切地说,那“f”代表 “formatted”,因为那些函数在输入 / 输出的过程中进行格式化,所以结果都是已经被格式化了的(formatted)数据。

其实除了 C,还有七种语言有 printf( ) 或类似的函数 / 机制:
1)C++(当然啦)
2)Java(刚补上)
3)Python(通过“%”操作符)
4)PHP
5)Perl
6)Octave
7)Maple

一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一

非格式化输入 / 输出其实就是二进制格式的输入 / 输出。 典型的例子是结构(struct)的读 / 写和高效的文件拷贝。
C 的非格式化输入 / 输出很简单,因为就只有两个相对应的标准库函数提供这种便利: fread( ) 和 fwrite( )。

假设现有一个 byte,内容是 01000001(等于十进制 65)。

如果你用 fwrite( ) 把这个 byte 输出到一个(新的)文件里去,那么那个文件的内容将是 01000001,跟那个 byte 的内容一模一样。用文本编辑器打开文件来看的话,你会看到一个字符:‘A’,因为 65 是该字符的 ASCII 值。(没错,一般的文本编辑器只能以文本格式把文件的内容输出到显示屏上去。)

但如果你改用 fprintf( ) 以整数格式(%d)进行输出,那个文件的内容将会是两个 byte:00110110 和 00110101,即 ASCII 字符 ‘6’和‘5’,因为格式化输出的结果皆为文本。

日常生活中的例子:
你发现一个事实—— 某某想吐。
如果你不诠释(格式化)该现象(数据)而告诉别人(输出),你说的就是“某某想吐”。
反之,如果你诠释了再告诉别人,你说的可能就是“某某病了”、“某某晕船”、“某某怀孕了”等等。

f:format,代表按格式输出(或输入)

我听说,在创造C的时候,缔造者正在研究“print”时,正在为输入输出结果如何正确显示时,不经意感叹了一声:“So difficult,fuck you……”,突然灵机一动,“Yeah,I like f,format.”后来,也就把“print”改为“printf”了。可见,“f”暗含format之意。

f:format,代表按格式输出(或输入)

上家正确极了,不过如果你是c语言的始发者,你也可以按为:modemmozart哦,呵呵!

printf称为格式化输出,scanf成为格式化输入。

f代表format的意思。