printf中f的含义是什么?

17

C的printf函数中的"f"代表什么意思?


1
我刚开始学习C编程... 如果这个问题很傻,请原谅我... - Sharan
12
这个问题有哪些含糊或歧义之处?它为什么不能合理地回答?当然有合理的答案。(似乎很有趣,K-ballo是关闭这个问题的人之一,尽管已经有了被接受的答案。) - jamesdlin
1
这是一个真正的问题,但它可以很快地通过谷歌搜索得到答案(就像许多其他问题一样):https://www.google.com/search?q=What+is+the+meaning+of+"f"+in+C%27s+printf 因此,它是重复的,所以我投票关闭,但出于不同的原因。 - Ofer Zelig
3
Google-ability不应成为关闭问题的依据。Google索引StackOverflow;因此,所有SO上的问题和答案都可以隐式地在Google上搜索到。 - jamesdlin
4个回答

27

printf 中的 f 代表格式化(formatted),它用于以格式化的方式输出内容。


谢谢...那么如果我只写print,它会工作吗... - Sharan
4
C标准库中没有print函数。 - K-ballo
6
非格式化版本称为puts - Chris Rice

3
正如其他人所指出的,trailing f 表示格式化输出(或者 scanf 系列函数用于格式化输入)。
但是,我要补充说明的是,这个区别很重要,因为调用者需要知道字符串应该具有格式说明符的语义。例如,请勿执行以下操作:
char* s = get_some_user_input();
printf(s); // WRONG.  Instead use: printf("%s", s) or fputs(stdout, s)

如果变量 s 包含 % 字符,直接使用 printf 输出可能导致访问不存在的参数,从而导致未定义行为(这是某些安全漏洞的原因)。如果您自己定义类似于 printf 的可变参数函数,请记住这个命名约定。

0

printf 允许格式化输出,而 print 不行。此外,在 C 语言中并不存在 print 函数。我甚至不知道 printg 是什么。


1
我也不知道print是什么... - Jerry Coffin
是的,我也记得它不存在 :) 自从我最后一次编写纯C代码以来已经很长时间了。 - Phillip Schmidt

0

如果我没记错的话,printf代表“将格式化数据打印到标准输出(stdout)”。


1
只需要“格式化输出”—— 只要您没有使用 fprintf 指定其他内容,那么 stdout 就可以默认使用。 - Jerry Coffin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接