2014-11-22 3 views
0
#include <stdio.h> 

/* count characters in input; 2nd version */ 
main() 
{ 
    double nc; 

    for (nc = 0; getchar() != EOF; ++nc) 
     ; 

    printf("%.0f\n", nc); 
} 

프로그램을 컴파일하고 실행하고 문자 (예 : abcd)를 입력하면 Enter 키를 누른 다음 이스케이프 문자 Ctrl + Z를 누르십시오. "숨겨진"개행 문자 때문이거나 EOF 명령을 계산합니까? 혼자 EOF 명령을 입력하면 0으로 유지되기 때문에이 문자 계산 프로그램에는 줄 바꿈 문자가 포함되어 있습니까?

+1

나는 EOF 만했을 때 당신이 0이된다면 당신 자신의 질문에 대답했다고 생각합니다. 테스트로서 3 줄의 텍스트를 입력 한 다음 EOF를 입력하면됩니다. – lurker

+0

좋아, 이제 알 수있다. 내가 계속 전진하기 전에 모든 프로그램/연습 문제를 100 % 확신하고 싶습니다. 감사. – user3099345

+0

'이중'으로 간주되는 특별한 이유가 있습니까? – EOF

답변

1

예.

getchar "무언가"를 입력 할 때까지 기다립니다. 을 입력하면 '무언가'(즉, 정의 된 문자 값이 있고 다른 키는 예를 들어이 아닐 수 있습니다). 같은 토큰, 키 콤보으로

Ctrl 키 Z뿐만 아니라 "뭔가"가 될 것입니다 + - 대부분의 시스템에서 값 26 -하지만 당신은 취급이 특정 코드를 사용하고있는 표준 입력/출력 라이브러리를 특수 명령 : EOF. 내 OS에서 Mac OSX는 입니다. Ctrl + D ("Unix와 유사한 시스템에서 EOF를 표시하는 데 역사적으로 Ctrl + D가 사용되었습니다"이외의 다른 이유로 알려지지 않음).

'개행 문자'는 결코 "숨김"또는 "보이지 않음"이 아니며, 그렇게 지시하면 변수 또는 문자열에 읽고 저장됩니다. putchar 및 기타 텍스트 인쇄 기능이 "관련 문자 표시"이외의 다른 작업을 수행하기 때문에 사용자가 볼 수없는 이유는 커서를 다음 줄로 이동하기 때문입니다. 또한 표준 기능의 일부이며 좋은 점도 있습니다. 결국 을 "다음 줄로 이동"을 누르기를 원하지 않을 것입니다. 사실이 코드의 공통 기능이기 때문에 대부분의 글꼴은 표시 할 수있는 항목이 없습니다.

자세한 내용은 What does getchar() exactly do?도 참조하십시오.

관련 문제