2012-03-21 4 views
0

내가이 코드를 실행할 때 왜 아무 것도하지 않습니까? 그것은 문자를 셀 예정이다 나는 누군가가 제안한 ctrl + z를 눌렀다. 그리고 난 여전히 임의의 것들을 입력 한 후에 얼마나 많은 문자를 인쇄하지 않을 것이다. 난 당신이 CTRL+Z을 누른 다음 입력하면 BTW왜이 코드는 문자 수를 늘리지 않습니까?

#include <stdio.h> 

int main() 
{ 
    long nc; 
    nc = 0; 

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

    printf("%ld\n", nc); 

    return 0; 
} 
+0

어떤 IDE를 사용하고 있습니까? –

+0

저의 작품 :'$./keys' 'jasdasjdnasdjasndas' '20' – trojanfoe

+0

코드가 작동합니다. 더 많은 문자를 읽지 않으려면 EOF를 주어야합니다. 그런 다음 입력 된 문자 수를 인쇄합니다. – Juho

답변

2

그것은 작동 윈도우를 사용하고 있습니다. 이로 인해 EOF이 발생합니다. 당신은 당신이 Enter 키를 누르면 종료 할 경우

,

while(getchar() != '\n') 
0

your.exe < your_input.file를 호출하려고하거나 Ctrl+Z을 눌러 사용 getchar가()가 무한 루프 인 반면 때문에 다음 EnterEOF

+0

오 하나님 내가 언론을 입력 깜빡 .. 감사합니다 남자 – latenightcode

-2

을 얻을 수 있습니다.

그래서 프로세스를 종료하지 않고 루프를 종료하지 마십시오.

+1

인쇄물은 여전히 ​​인쇄됩니다. –

+2

'while (getchar()!)'- 무한하지 않을뿐만 아니라 'NUL' 문자까지 반복됩니다 - while (getchar()! = EOF)'이므로 루프는 표준 입력이 고갈되었습니다. – delnan

+0

당신은 맞지만, 키보드로는 보통 EOF 문자를 쓰는 것이 어렵고 파일은 입력 스트림으로 쓰지 않습니다. 그렇다면 그것은 당신이 무엇을 세고 싶은가에 달려 있습니다. 심지어 getchar()에서 루프로 읽는 것이 입력 파일 길이를 세고 싶다면 우아한 방법이 아니기 때문입니다. – kappa

1

샘플이 UNICODE = 1로 컴파일되어 있습니까? 그러면 WEOF와 비교해야합니다.

1

^D를 사용하여 EOF 신호를 프로그램에 제공 할 수 있습니다. 많은 시간^Z가 작동하지 않습니다.

관련 문제