2015-06-24 86 views
-1

我有代码:while循环不断重演

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

据我所知EOF等于-1 我读-1从键盘(输入流),它必须停止本身,而是循环不断重复。 为什么?

+6

尝试使用Ctrl + d或Ctrl + Z –

+1

如果你的意思是你输入两个字符'-1',那么它不会停止(字符只会被回显,EOF通过文件末尾:'Ctrl-Z'(Windows)或'Ctrl-D'(Unix) – TripeHound

+0

请注意,在Windows控制台中,当Ctrl-Z紧跟在'newline'后面时,它只会被识别为'EOF' ,否则它被视为值'26'。 –

回答

2

-1实际上是两个单独的字符-1,它不等同于EOF。在Windows上使用Ctrl + d或在Windows上使用Ctrl + z

2

As @SouravKanta暗示:您的循环一次只能读取一个字符,因此如果您输入-1,则会读取-,然后是1,它们都不指示EOF。我相信Cntl-d是你想要的,至少在* nix(你没有指定平台)。