繁体   English   中英

getc Vs getchar Vs Scanf用于从stdin读取字符

[英]getc Vs getchar Vs Scanf for reading a character from stdin

以下三个功能:

getc getchar&scanf

从stdin读取角色的最佳选择是什么?为什么?

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

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

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

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

来自Beej的C编程指南

所有这些功能都以这种或那种方式从控制台或文件中读取单个字符。 差异相当小,以下是描述:

getc()从指定的FILE返回一个字符。 从使用的角度来看,它相当于相同的fgetc()调用,而fgetc()更常见。 只有两个功能的实现不同。

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

是的,我作弊并使用cut-n-paste来完成最后一段。

getchar()从stdin返回一个字符。 实际上,它与调用getc(stdin)相同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM