“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 数组的命令行参数。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...