비트가 현재 코드와 혼동됩니다. 정말 그러나, 유니에서 공부하고 현재getchar()! 반환 된 값을 인쇄하려고했습니다! = 입력 된 모든 문자의 EOF
지금은 주로 C에서 좋은 몇 년 ++와 자바의 조금 봤는데 프로그래밍 브라이언 W. 커니 핸에 의해 를 통해 C 프로그래밍 언어 (제 2 판)을가는 C와 많이 연주했는데 뭔가가 정말로 나를 괴롭혔다.
그래서 당신은 getchar()
에 의해 판독 된 문자가 될 것이라고 증명하고 싶은 책에 1-6 행사 중 하나 1
또는
0
지금은 완전히 그것이 있는지 확인하기 위해 버퍼와 검사의 문자를 읽고 이해 그래서 1
다른 반환하면되지 EOF
, 0
이것은 내가 a
을 입력하고 Enter 키를 입력하는 경우는이 a
과 입력 읽고 1,1
또한 내가 CTRL+D
를 사용하는 경우가 리턴 것을 의미한다 0
인 경우 EOF
이 발생합니다. 내가 가지고있는 문제와 내가 논리를 이해하지 못하는 부분은 다음과 같습니다. aa Ctrl+D
, 내가 읽는 방식은 1,1,0
이고 a,a
은 EOF
입니다. 그러나 1,1
다음 인쇄를 기다리는 것으로 보입니다.
왜 이런가요?
여기는 지금까지 작성한 코드입니다. 내가 aa ctrl+D
을 수행 할 때 자사가 1
또는 0
하지만 문제는 여전히 유효 ..
왜 내가
1 Not End Of File
1 Not End Of File
0 End Of File?
을 또한 인쇄되지 않을 경우
#include <stdio.h>
main()
{
int c;
while(c = (getchar() != EOF)) // Read char in buffer and check to see if it's EOF or not, then assign a 1 or 0 to c
{
printf("1 Not End Of File\n");
}
printf("0 End Of File\n");
}
분명히 내가 보여 printf("%d",c);
을 사용할 수 있습니다 그러나이 특정 질문에 대한 답변은 사이트에서 이미 확인되었지만 아무도이 특정 문제에 대해 자세히 대답하지 않은 것으로 보입니다. 대신 getchar()
이 어떻게 하나의 char 및 re 광고 및 그 동안의 방법은 EOF
일 때 종료되지만, EOF
이 몇 문자에 추가 된 경우 다음 줄이 실행되지 않는 이유는 아닙니다.
그것은 잠시 후 두 a
의와 읽기보다는이 CTRL+D
에 도달해야 할 때 0
에 c
를 설정 한 다음 종료 것, 앉아서 이상의 입력을 기다리는 것?
터미널 입력과 관련된 몇 가지 문제가있을 수 있으며 C 코드와 관련이 없습니다. 이 세 가지 실험을 비교해보십시오 : (1) "a a RETURN CTRL + D", (2) "a CTRL + D", (3) "a CTRL + D CTRL + D". –
당신은 그것이 내가 생각했던 것을 보았습니다. 나는 세 가지 실험을 모두 테스트했다. 1) 1,1,1을 반환하고 입력을 기다렸다가 Ctrl + d를 누른 다음 0을 출력했다. 2)는 1,1을 반환하고 입력을 기다린다.3)은 1,1 대기 후 0을 입력합니다. –
예상되는 결과이며 Shiping의 대답과 일치합니다. Unix/Linux 터미널 드라이버는 문자를 누적하고 (a) Return 키를 누르거나 Control-D를 누르기 전까지 프로그램에 전달하지 않습니다. 또한 줄의 시작 부분에있는 경우 (즉, 줄 바꿈이 앞에 오는 경우) control-D는 EOF를 생성합니다. –