You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

getchar是读取Ctrl+Z还是返回EOF?附代码验证疑问

关于getchar()读取Ctrl+Z返回值的问题

代码示例

#include <stdio.h>

int main(void) {
    int d=0;
    d = getchar();
    printf("%d\n", d);
}

运行输出

^Z
-1

疑问

我认为可能存在两种情况:

  1. getchar读取Ctrl+Z并返回它;
  2. getchar未读取任何内容并返回EOF。

是否存在其他可能性?哪种情况正确?


解答

情况2是正确的,不存在其他可能性。

在Windows控制台环境中,Ctrl+Z是输入流的结束标记(EOF标记):

  • 当你输入Ctrl+Z时,操作系统会将其识别为输入流终止的信号,getchar()不会读取任何实际字符,直接返回EOF——而标准C中EOF被定义为-1,这和你看到的输出完全匹配。
  • 控制台显示的^Z只是输入的回显,用来提示你刚才输入了这个控制字符,并非程序实际读取到的内容。

补充说明:在类Unix系统中,输入流结束标记是Ctrl+D,逻辑完全一致,getchar()同样会返回EOF(即-1)。


内容的提问来源于stack exchange,提问作者user394334

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 04:53:16