-1
我有代码:while循环不断重演
int c;
while((c = getchar()) != EOF)
putchar(c);
据我所知EOF等于-1 我读-1从键盘(输入流),它必须停止本身,而是循环不断重复。 为什么?
我有代码:while循环不断重演
int c;
while((c = getchar()) != EOF)
putchar(c);
据我所知EOF等于-1 我读-1从键盘(输入流),它必须停止本身,而是循环不断重复。 为什么?
-1
实际上是两个单独的字符-
和1
,它不等同于EOF。在Windows上使用Ctrl + d或在Windows上使用Ctrl + z。
As @SouravKanta暗示:您的循环一次只能读取一个字符,因此如果您输入-1,则会读取-
,然后是1
,它们都不指示EOF。我相信Cntl-d是你想要的,至少在* nix(你没有指定平台)。
尝试使用Ctrl + d或Ctrl + Z –
如果你的意思是你输入两个字符'-1',那么它不会停止(字符只会被回显,EOF通过文件末尾:'Ctrl-Z'(Windows)或'Ctrl-D'(Unix) – TripeHound
请注意,在Windows控制台中,当Ctrl-Z紧跟在'newline'后面时,它只会被识别为'EOF' ,否则它被视为值'26'。 –