2016-08-16 2 views
0

나는 책을 읽고 책의 작은 프로그램을 따라 갔다. 결과가없는 작은 계산 프로그램이있다.while 루프 버그 C

#include <stdio.h>  

int main() { 

    long nc; 

    nc = 0; 
    while(getchar() != EOF) 
     ++nc; 
    printf("%ld\n", nc); 
} 

일부 문자를 입력하면 결과가 나타나지 않고 프로그램이 여전히 실행 중이므로 문자를 입력 할 수 있지만 결과는 표시되지 않습니다. 코드에 문제가 있습니까?

그리고 Xcode에서 실행하고 있습니다.

+1

프로그램 시작 부분에'#include '이 있습니까? – Barmar

+3

더 이상 데이터가 없다는 것을 프로그램에 어떻게 알립니 까? 더 이상 데이터가 없음을 나타 내기 위해 줄 시작 부분에 Unix 계열 시스템에서는 Control-D를, Windows에서는 Control-Z를 입력해야합니다. 또는'charcount.c'와 같은 파일을 가지고 있고 프로그램이'charcount'이라면'charcount

+0

코드를 올바르게 포맷했으면 묻지 않아도됩니다. – Olaf

답변

1

코드는 당신이있는 경우에 필요한 헤더 파일 포함, 괜찮습니다.

What is EOF in the C programming language?을 참조 할 수 있습니다.

Linux 시스템 및 OS X에서 EOF를 발생시키기 위해 입력 할 문자는 Ctrl-D입니다. Windows의 경우 Ctrl-Z입니다.

+1

''에서 사용하는 코드는 무엇입니까? –

+0

네, 맞습니다. 이 경우에는 이 필수 헤더 파일이 아닙니다. – CWLiu

1

우선, 잊어 버린 경우에는 stdio.h 헤더 파일을 포함시켜야하며 두 번째로는 코드에 아무런 문제가 없습니다.

while(getchar() != EOF) 
    ++nc 

파일의 끝을 검사 상기 코드 라인 및 false를 반환하는 경우는 NC를 증가와는 NC를 인쇄하기 전에 while 루프 파일의 단부가 발생하는 경우에만. 리눅스에서 파일의 끝은 Ctrl + D이므로 문자를 입력 한 후에 Ctrl + D를 입력하면 파일의 끝이나 입력을 말한 후에 카운트 할 수 있습니다.

#include <stdio.h> 

당신이 프로그램에 'EOF를 보낼한다, while 루프를 종료하려면 :

+0

윈도우의 경우 파일 끝 (EOF)으로 Ctrl + Z를 누릅니다. – d3r1ck

+0

누군가 stdio.h를 묻는 경우를 대비하여 nc를 인쇄하려면 stdio.h가 필요합니다. – d3r1ck