我写了这段代码:

#include <stdio.h>

int main() {
    int c;

    while ((c = getchar()) != EOF)
        putchar(c);

    return 0;
}

在windows下,我发现我必须输入ctrl+z才能停止程序,我还打印了EOF的值,它是-1。
但是,当我输入 -1 而不是 ctrl+z 时,程序会继续执行,我想了解原因。谢谢!

最佳答案

输入 "-1" 作为文本不会返回整数值 -1 而是两个字符,即一个 '-' (对应于 ASCII 值 45 )和一个 '1' (对应于 ASCII 值 49 )。两者都不等于 EOF(十进制的 -1)。

根据定义,您不能输入被 getchar() 用作负值的内容,因为负值被定义为表示“文件结尾”。

如果要读取整数值(如 -1 ),请使用 scanf :

int num;
if (scanf("%d", &num)==1) { // successfully read one valid integral value?
    printf("you entered number %d:", num);
}

关于c - windows下EOF值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46534511/

10-16 02:27