본문 바로가기
Develop/C

20-3 C 언어 파일 위치 지시자 fseek ftell 예제

by 구운밤이다 2016. 8. 24.
728x90
반응형

2016/08/21 - [IT/C언어] - 20-2 C 언어 파일의 입출력 심화(바이너리) 예제

오늘은 파일 위치 지시자를 배워보도록 할거에요~ 먼저 파일 위치 지시자란 말그대로 파일에서 가리키고 있는 멤버를 말합니다! 즉 파일을 개방하고 문자 단위 출력을 하면 파일 맨 앞 부분부터 차례로 나오는 걸 확인할 수 있죠! 바로 개방 후에는 파일 처음을 가리키고 있는데요 여기서 파일 중간부터나 파일 맨 끝부터 읽고 쓰기를 원한다면 파일 위치 지시자를 이동시켜야해요! 이동하는 함수는 fseek입니다! 그럼 예시를 통해 알아볼까요? 


이렇게 abcdefgh가 적혀있는 ex.txt라는 파일이 있다고 가정합시다.


file=fopen("ex.txt","rt);

fseek(file, 2, SEEK_SET);

putchar(fgetc(file));

putchar(fgetc(file));


이렇게 프로그램을 짰다면 콘솔창엔 뭐라고 나올까요? cd라고 나옵니다! 설명을 해드리면 fseek함수에서 file 에 들어있는 파일 위치 지시자를 SEEK_SET 부터 2칸 옮기라는 말이에요! 그래서 처음에 a부터 두 칸 이동해서 c가 출력되고 그 후 위치 지시자가 한 칸 이동해서 d가 출력되게 됩니다! 이 SEEK_SET 같은 건 3개가 존재하는데 각각의 뜻은 SEEK_SET 파일 처음 SEEK_CUR 현재 SEEK_END 맨 끝 을 의미합니다! 양수일 경우 끝 쪽으로 이동하게 되고 음수를 적으면 앞쪽으로 이동하게 되요 그리고 한 가지 주의해야 할 점은 맨 마지막엔 EOF가 존재하기 때문에 한 칸을 더해서 생각하셔야 됩니다! 저 파일을 예로 들자면


fseek(file, -2, SEEK_END);

putchar(fgetc(file));

putchar(fgetc(file));


이렇게 하면 gh가 출력이 되겠죠? EOF 부터 두칸 옮겨 g가 출력이 된 이후! 하나 더 출력하면 h가 출력되는 거에요

그리고 파일 위치 지시자의 위치를 알려주는 함수가 존재하는데요! 바로 ftell함수입니다! 이거도 예제를 통해 알아볼까요?


fpos=ftell(file);

fseek(file, fpos, SEEK_SET);


이런 식으로 사용하면 됩니다! 현재 파일 위치 지시자의 위치를 기억해놓고 fseek함수를 이용해 파일 처음부터 그만큼 이동하면 되겠죠? 반복문에서 유용하게 쓸 수 있답니다!


모르는 것은 댓글이나 쪽지로 남겨주시면 성심 성의껏 답변해드리겠습니다!! 댓글공감구독(이웃추가)는 블로거에게 큰 힘이 됩니다! 부탁드리면서 이번 포스팅을 마치도록 하겠습니다! 지금까지 딘또였습니다.

728x90
반응형

댓글