以下三个功能:
GETC getchar& scanf的
哪个是从stdin读取字符的最佳选择?为什么?
这些功能中是否存在任何已知的缺点或限制,使一个功能优于另一个功能?
答案 0 :(得分:26)
如果您只想从stdin读取单个字符,那么getchar()
是合适的选择。如果您的要求更复杂,那么getchar()
就不够了。
getc()
允许您从不同的流中读取(例如,使用fopen()
打开的流); scanf()
允许您一次只阅读一个字符。使用getchar()
时最常见的错误是尝试使用char
变量来存储结果。您需要使用int
变量,因为值getchar()
返回的范围是“unsigned char
范围内的值加上单个负值EOF
”。 char
变量没有足够的范围,这可能意味着您可以将完全有效的字符返回与EOF
混淆。这同样适用于getc()
。
答案 1 :(得分:5)
from Beej's Guide to C Programming
所有这些功能以这种或那种方式,读取单个字符 从控制台或文件。差异相当小,而且 这是描述:
getc()返回指定FILE中的字符。从用法 它的立场相当于fgetc()调用,而fgetc()是一个 看起来更常见。只执行了两个 功能不同。
fgetc()返回指定FILE中的字符。从用法 除了那个,它相当于相同的getc()调用 fgetc()有点常见。只有执行了 两个功能不同。
是的,我作弊并使用cut-n-paste来完成最后一段。
getchar()从stdin返回一个字符。事实上,它是一样的 调用getc(stdin)。