我写了这段代码:
#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/