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함수를 이용해 파일 처음부터 그만큼 이동하면 되겠죠? 반복문에서 유용하게 쓸 수 있답니다!
모르는 것은 댓글이나 쪽지로 남겨주시면 성심 성의껏 답변해드리겠습니다!! 댓글, 공감, 구독(이웃추가)는 블로거에게 큰 힘이 됩니다! 부탁드리면서 이번 포스팅을 마치도록 하겠습니다! 지금까지 딘또였습니다.
'Develop > C' 카테고리의 다른 글
터미널을 더 예쁘게! iTerms2 개발환경 (0) | 2019.09.01 |
---|---|
21 C 언어 메모리 동적 할당 malloc calloc realloc free 예제 (0) | 2016.08.24 |
20-2 C 언어 파일의 입출력 심화(바이너리) 예제 (0) | 2016.08.21 |
20 C 언어 파일의 입출력 예제 (0) | 2016.08.18 |
19-4 C 언어의 구조체 변형 열거형 예제 (0) | 2016.08.17 |
댓글