Provided by: manpages-ko_20050219-2_all bug
        int fgetc(FILE *stream);
        char *fgets(char *s, int size, FILE *stream);
        int getc(FILE *stream);
        int getchar(void);
        char *gets(char *s);
        int ungetc(int c, FILE *stream);
        unsigned char를 int로 변환한 다음 반환값으로 돌려준다. 만약 파일의 끝에
        도달했을 경우에는 EOF를 반환하고 문제가 발생하면 에러를 반환한다.
 
        getc()는 stream을 여러 번 검사하는 매크로 함수로 구현되어  있다는  점을
        제외하고는 fgetc()와 동일하다.
 
        getchar()는  getc(stdin)와  동일하다.  즉 표준 입력을 통해문자를 입력
        받는다.
 
        gets()는 표준 입력(stdin)으로부터 개행 문자나 EOF로 끝나는 한 줄을 입력
        받아 s가  가리키는  버퍼에  저장하고 마지막을 '\0'로 변경한다. 그러나
        버퍼 오버플로우에 대한 검사를 하지 않는다.   (이  점에  대해섦 아래의
                 보기 바란다.)
 
        fgets()는  최대  size  -  1  개  이하의 문자를 stream으로부터 읽어s가
        가리키는 버퍼에 저장한다. 그러나 EOF나 개행 문자를 입력 받았을 경우에는
        읽기를  멈춘다.   입력  받은  개행 문자는 그대로 버퍼에 저장하고 '\0'을
        버퍼의 마지막 문자 다음에 추가한다.
 
        ungetc()는 c를 unsigned char로  변환한  다음,  읽기  명령에  의해  다시
        읽어들일  수  있도록  stream에  푸쉬한다.   푸쉬한다 - 라는 말은 문자가
        지정한 위치에 명령의  역순으로  저장된다는  말이다;  즉  단  한  문자의
        푸쉬만을 보장할 수 있다.
 
        여기에 설명한  함수는  섭 섞어 호출할 수도 있고, 같은 종류의 입력
        스트림에 대한 stdio 라이브러리의 함수와 섞어호출할 수도 있다.
        변환하여  반환한다.  그러나  파일의  마지막일  경우에는  EOF를,  에러가
        발생했을 경우에는 에러값을 반환한다.
 
        gets()와 fgets()는 성공했을 경우 문자오포인터  s를  반환한다.  그리고
        에러가  발생하거나 파일의 마지막에 도달한 경우, 또한 아무런 문자도 입력
        받지 못한 경우에는 NULL을 반환한다.
 
        ungetc()는 성공했을 때는 c를 반환하고 에러가  발생했을  경우에는  EOF를
        반환한다.
        사전에 알 수 없고, 그로 인해  gets()가  버퍼의  용량을  넘어섦 범위에
        문자를  저장할  위험이  있다.  그러므로  gets()를  사용하는 것은 컴퓨터
        보안에 치명적인 타격을 줄 수 있다.  (버퍼  오버플로우를  이용한  해킹이
        가능하다. - 역주) 대신 fgets()을 사용하는 것이 좋다.
 
        여기에 설명한  함수의  입력  스트림을   stdio  라이브러리의 로우-레벨
        시스템 콜인 read()의 파일 디스크립터와 공유해사용하는 것은 결코  좋은
        방법이  아니다.   그  결과가 정의되어 있지 않아의도하지 않은 방향으로
        동작할 가능성이 크기 때문이다.
        ferror(3)