“getchar()”如何知道在 C 中读取什么字符?

问题描述

我刚刚开始学习 C,我遇到了一个在 while 循环中使用函数 getchar 的示例。我不明白 getchar 是如何知道在没有参数的情况下返回哪个字符的。它的使用方式与此类似:

int c;
while((c = getchar()) != EOF){
    putchar(c);
}

解决方法

首先注意函数原型:

int getchar(void);

getchar() 函数总是standard input 流中读取 next 字符。

不需要任何参数,因为它只做一件事。特别是,从 documentation:

观察

getchar() 函数应等同于 getc(stdin)。

所以 getchar() 实际上与 getc() 相同,只是 getc() 允许您指定输入流。

您的困惑在于 getchar() 函数没有明确的输入参数(以函数参数的形式——它是一个 void 函数),但它可以返回各种不同的结果给你。

它的“输入”取决于用户输入,很像 scanf()fgets() 甚至是通过 argv 数组的命令行参数。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...