다루두루

블로그 이미지

차케요

공부하면서 정리하는 노트같은 블로그입니다.

c언어 독학 EOF

C언어 알고리즘 2015. 9. 28. 23:45

c언어 독학 EOF


 취미생활로 c언어 독학을 하고 있는데 그동안 문자열을 입력받고 출력할 때는 scanf()와 printf() 함수를 이용했습니다. 하지만 이 녀석들은 메모리의 공간도 많이 차지하고 연산의 양이 많은 단점이 있어서 하나의 문자만 입력받고 출력할 때는 putchar, fputc, getchar, fgetc 함수를 이용하는 게 좋기 때문에 지난 글에서 이 함수들의 쓰임새를 대충 살펴봤습니다. 그런데 문자를 문자를 입. 출력 하는 함수인데 반환형이 int형인 게 좀 이상합니다.


int getchar(void);

int fgetc(FILE*stream);


■ 왜 반환형이 int형 일까요? 그 이유를 대충 살펴보겠습니다. C언어에는 파일의 끝을 표시하기 위해서 EOF(End Of File)라는 상수가 있습니다. 이 녀석은 -1로 정의되어 있고 파일을 대상으로 fgetc 함수가 호출되면 EOF가 반환되며 키보드를 대상으로 하는 입력에서는 호출에 실패하거나 "CTRL+Z(윈도우)" 키를 누를 때입니다. 

 

 

 예제에서 EOF의 존재를 확인해보겠습니다.

▲ 루프문을 끝내는 조건으로 EOF의 존재가 확인되면 문자열을 출력하고 빠져나오도록 하고 있는데요. 프로그램을 실행해서 문자열을 입력하다가 CTRL+Z를 눌러서 EOF의 존재를 확인하겠습니다.


▲ 예제처럼 EOF의 존재를 확인할 수 있습니다. 그리고 이 녀석은 -1이라는 상수라고 앞에서 정리했었는데요. c언어 컴파일러에는 unsigned char로 처리하는 컴파일러도 있기 때문에 반환형이 char형이면 컴파일 과정에서 양의 정수로 형 변환이 일어날 수도 있게 됩니다. 그래서 -1을 정확하게 인식할 수 있는 int형으로 반환이 되는 것입니다. 


 이렇게 해서 EOF의 존재와 하나의 문자 입출력 함수 putchar, fputc, getchar, fgetc의 반환형이 int형인 이유를 알아봤습니다. 수고하셨어요.

저작자표시 비영리 변경금지
Posted by 차케요

    최근...

  • 포스트
  • 댓글
  • 트랙백
  • 더 보기

카테고리

NEW (900)
아이폰 개발 기초 (7)
취미 (16)
아두이노 (16)
[안드로이드] 어플만들기 (77)
안드로이드 기초 다지기 (61)
슈팅게임 만들기 (4)
[JAVA]자바 공부하기 (48)
C언어 알고리즘 (61)
[Unity3D]유니티3D 강좌 (7)
컴퓨터 (325)
포토샵CS2 강좌 (6)
유용한 프로그램 (244)
리눅스 노트정리 (22)
임베디드 리눅스 (11)
New블로그 (9)
음식의 효능 (4)
일반상식 (56)
HTML 공부 (40)
포토샵 공부 (36)
엑셀 (6)
파워포인트 공부 (19)
노트정리 (38)
일상 (33)
TV영화 (85)
방명록 : 관리자 : 글쓰기
차케요's Blog is powered by daumkakao
Skin info material T Mark3 by 뭐하라
favicon

다루두루

공부하면서 정리하는 노트같은 블로그입니다.

  • 태그
  • 링크 추가
  • 방명록

관리자 메뉴

  • 관리자 모드
  • 글쓰기
  • NEW (900)
    • 아이폰 개발 기초 (7)
    • 취미 (16)
      • 아두이노 (16)
    • [안드로이드] 어플만들기 (77)
      • 안드로이드 기초 다지기 (61)
      • 슈팅게임 만들기 (4)
    • [JAVA]자바 공부하기 (48)
    • C언어 알고리즘 (61)
    • [Unity3D]유니티3D 강좌 (7)
    • 컴퓨터 (325)
      • 포토샵CS2 강좌 (6)
      • 유용한 프로그램 (244)
    • 리눅스 노트정리 (22)
      • 임베디드 리눅스 (11)
    • New블로그 (9)
    • 음식의 효능 (4)
    • 일반상식 (56)
    • HTML 공부 (40)
    • 포토샵 공부 (36)
    • 엑셀 (6)
    • 파워포인트 공부 (19)
    • 노트정리 (38)
    • 일상 (33)
    • TV영화 (85)

카테고리

PC화면 보기 티스토리 Daum

티스토리툴바