2012-05-23 2 views
0

C 프로그래밍에 새로운 임 원 ... 바보 같은 의심이 될 것처럼 보일 수 있습니다 무엇을 지우려면C 프로그래밍 (getchar가 관련된 (초급 도움)) putchar()

코드 :

#define EOF 0 
main() 
{ 
    int c; 

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

이것은 내가 입력 한 값을 반환해야합니다 ... 그러나 그에 따라 ... 내가 0을 입력하면 종료해야합니까? 그렇지 않다면 ... 'while'아래의 진술은 정확히 무엇을 의미합니까? 어떤 도움을 주시면 감사하겠습니다들 : 당신이 명중 할 때

+1

'0'을 입력하면 숫자 값이 아닌 '0'ASCII 문자를 읽습니다. – tafa

답변

1

getchar 함수는 입력 된 ASCII 값 (영 48 또는 '0') 또는 (통상 -1) 헤더 파일 <stdio.h> 호출 EOF 값을 반환한다. 당신이 (당신이 정의가 아닌 하나의 적절한 EOF를) 또는 사용자가 제로를 기록하는 경우,이 훨씬 더 잘 작동합니다 EOF에 하나를 중지하려면

그래서 :

#include <stdio.h> 

int main() 
{ 
    int c = getchar(); 

    while (c != EOF && c != '0') 
    { 
     putchar(c); 
     c = getchar(); 
    } 

    return 0; 
} 
+0

고맙습니다. 기본에서 혼합 :) – Aki

2

EOF 의미는, 예를 들어, 리눅스에서 ctrl + d, 그것은 EOF 신호를 보내, 그것은 반드시 0 아니다.

+0

이 도움이 ... 감사합니다 :) – Aki

+0

@Aki no prob;) 참고 : http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work –

1

EOF은 확실히 아니다 0 ('0'도 아니고 char 리터럴이 48 임). char이 아예 없습니다. stdio.h (#include -ing!)은 -1으로 정의합니다. 그것은 당신이 읽고있는 파일이 더 이상 데이터를 가지고 있지 않음을 나타냅니다. 스트림의 바이트가 아니라 io 라이브러리가 완료되었음을 나타내는 방식입니다.

getchar의 이유는 int을 반환해야하므로 파일 끝 표식이 파일의 유효한 바이트가 될 수 없습니다.

다른 기능은 EOF에 다르게 도달했음을 나타냅니다. fgets()NULL을 반환합니다. read()은 읽은 바이트 수를 반환하여 0을 반환하며 아무 것도 읽을 수 없음을 나타냅니다.

+0

고맙지 만, 내가 원했던 것 같아 ... 나는 단지 0 대신 #define '0'을 넣었다. – Aki

0

0을 입력하면 실제로 0이 아니며 ASCII character0입니다. 숫자 값은 48이며 printf("%d\n", '0');으로 확인할 수 있으며 48을 인쇄합니다. EOF이며 실제는입니다. 즉, 표현은 본질적으로 0입니다.

+0

Ohk..i get it .. 감사합니다. 시간 :) – Aki