2012-09-17 4 views
0

가능한 중복 :
EndOfFile in C - EOF왜이 코드가 종료되지 않습니까?

내가 K & R.에서 예를하려고했던 나는 ctrl+c을 누르면하지 않는 한이 코드는 종료를하지 않는 이유를 이해할 수 없습니다입니다.

int main () 
{ 
    int c; 
    c = getchar(); 
    while(c!=EOF) 
     { 
      putchar(c); 
      c=getchar(); 
     } 
} 

도움을 주시면 감사하겠습니다. 감사!

편집 : 윈도우 사용 (비주얼 스튜디오 2010)

+0

어떤 시스템에서 이것을 시도하고 있습니까? Windows? 유닉스? 리눅스? EOF를 어떻게 입력합니까? (보통 리눅스 박스에서는 Ctrl + D) – BigMike

+0

어떻게 EOF를 입력합니까 –

답변

5

EOF는 파일의 끝입니다. 당신이 '키보드'에서 읽는다면, 당신은 반환을 윈도우에서

int main () 
{ 
    int c; 
    c = getchar(); 
    while(c!= '\n') 
    { 
     putchar(c); 
     c=getchar(); 
    } 
} 
+0

코드에서 사용하기가 더 쉽다고 생각합니다. 감사! – Shash

8

을 누릅니다 동일 라인 기호의 끝을 비교해야, 당신은 Ctrl 키 + Z를 눌러 표준 입력 스트림에서 파일의 끝을 생성. 버퍼링 동작에 따라 Return을 눌러야 할 수도 있습니다.

+0

+1 간결하고 깔끔하고 정확합니다. – BigMike

+0

@BigMike 감사 합니다만, 받아 들여질 정도로 정확하지는 않습니다. 원래 포스터의 마음을 읽지 못했습니다. :) – unwind

+0

OP는 \ n이 아닌 EOF를 잡아내는 방법을 물었습니다. 따라서 이것은 정답 인 IMHO입니다. 그 프로그램이 파이프에서 사용된다면, EOF에 대한 테스트를 \ n에 대한 테스트로 변경하면 간단히 중단됩니다. – BigMike

-1
On Windows machine ctrl+c acts as delimiter of character scanning same as EOF 
on this loop gets broken otherwise it will keep looking for characters 
+0

작동하지 않습니다 .. – Shash

+0

죄송합니다, Ctrl + C가 있어야합니다. –

관련 문제