getc 与 getchar 与 Scanf 从 stdin 读取字符

发布于 2024-08-26 12:21:24 字数 128 浏览 12 评论 0原文

以下三个函数中:

getc 获取字符& scanf

是从 stdin 读取字符的最佳选择,为什么?

这些功能中的任何一个是否存在任何已知的缺点或限制,从而使其中一个功能优于另一个功能?

Of the below three functions:

getc
getchar &
scanf

which is the best one for reading a character from stdin and why?

Are there any known disadvantages or limitations for any of these functions which makes one better than the other?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

七度光 2024-09-02 12:21:24

如果您只想从标准输入读取单个字符,那么 getchar() 是合适的选择。如果您有更复杂的要求,那么 getchar() 就不够了。

  • getc() 允许您从不同的流中读取(例如,使用 fopen() 打开的流);
  • scanf() 允许您一次读取多个字符。

使用 getchar() 时最常见的错误是尝试使用 char 变量来存储结果。您需要使用 int 变量,因为 getchar() 返回的值范围是“unsigned char 范围内的值,加上单个负值EOF”。 char 变量没有足够的范围来实现此目的,这可能意味着您可能会将完全有效的字符返回与 EOF 混淆。这同样适用于 getc()

If you simply want to read a single character from stdin, then getchar() is the appropriate choice. If you have more complicated requirements, then getchar() won't be sufficient.

  • getc() allows you to read from a different stream (say, one opened with fopen());
  • scanf() allows you to read more than just a single character at a time.

The most common error when using getchar() is to try and use a char variable to store the result. You need to use an int variable, since the range of values getchar() returns is "a value in the range of unsigned char, plus the single negative value EOF". A char variable doesn't have sufficient range for this, which can mean that you can confuse a completely valid character return with EOF. The same applies to getc().

同尘 2024-09-02 12:21:24

来自 Beej 的 C 编程指南

所有这些函数都以某种方式读取单个字符
从控制台或文件。差异相当小,并且
以下是说明:

getc() 从指定的 FILE 中返回一个字符。从使用情况来看
从角度来看,它相当于相同的 fgetc() 调用,并且 fgetc() 是一个
比较常见的一点。仅执行两者
功能不同。

fgetc() 从指定的 FILE 中返回一个字符。从使用情况来看
从角度来看,它等同于相同的 getc() 调用,除了
fgetc() 更常见一些。只有实施
两个功能不同。

是的,我作弊并使用剪切粘贴来完成最后一段。

getchar() 从标准输入返回一个字符。事实上,它是一样的
调用 getc(stdin)。

from Beej's Guide to C Programming

All of these functions in one way or another, read a single character
from the console or from a FILE. The differences are fairly minor, and
here are the descriptions:

getc() returns a character from the specified FILE. From a usage
standpoint, it's equivalent to the same fgetc() call, and fgetc() is a
little more common to see. Only the implementation of the two
functions differs.

fgetc() returns a character from the specified FILE. From a usage
standpoint, it's equivalent to the same getc() call, except that
fgetc() is a little more common to see. Only the implementation of the
two functions differs.

Yes, I cheated and used cut-n-paste to do that last paragraph.

getchar() returns a character from stdin. In fact, it's the same as
calling getc(stdin).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文