C 该程序如何停止接收输入?

C 该程序如何停止接收输入?,c,linux,C,Linux,我正在编写一个C源代码,以获取输入 while(!feof(stdin)){ fscanf(stdin, "%d ... 我不明白的是,你如何让它停止接受输入并处理输入?Ctr+Z只是终止了整个过程,我尝试在没有输入的情况下按enter键,但它不起作用。EOF(通常是一个值为-1的define)指示器在Linux上与文本文件的CTRL+D(ASCII代码4)匹配。它非常通用,可以用于二进制文件和文本文件,也可以用于不同的环境(例如,它将在DOS/Windows上与文本文件的C

我正在编写一个C源代码,以获取输入

 while(!feof(stdin)){
        fscanf(stdin, "%d ...
我不明白的是,你如何让它停止接受输入并处理输入?Ctr+Z只是终止了整个过程,我尝试在没有输入的情况下按enter键,但它不起作用。

EOF(通常是一个值为-1的
define
)指示器在Linux上与文本文件的CTRL+D(ASCII代码4)匹配。它非常通用,可以用于二进制文件和文本文件,也可以用于不同的环境(例如,它将在DOS/Windows上与文本文件的CTRL+Z匹配)

在您的例子中,当用户键入CTRL+D作为输入时,循环将退出,因为输入流将到达其末尾(然后将返回非零)

为查看此方法的缺陷(),只需尝试输入一些文本,然后“代码> PRINTF < /代码>它(使用各种输入,终止于开始或中间行)。有关更多详细信息,请参见

更好的(最不令人惊讶的)实现可以避免
fscanf
,并依赖于
fgets
返回值(例如)。将其行为与此进行比较:

char buffer[80];
while (fgets(buffer, sizeof(buffer), stdin) != NULL) {
    // ...
}

它应该是大写的d吗?我试过用小写字母,它在这台机器上工作。没有大写/小写的CTRL+D。它只是ASCII代码4(CTRL-D是生成该代码的快捷方式)。