모두의 코드
C 언어 레퍼런스 - fgetpos 함수
작성일 : 2010-04-18
이 글은 5859 번 읽혔습니다.
아직 C 언어와 친숙하지 않다면, 씹어먹는 C 언어 강좌를 보는 것이 어떻까요?
fgetpos
#include <stdio.h> // C++ 에서는 <cstdio> int fgetpos(FILE* stream, fpos_t* position);
스트림의 위치 지정자(position indicator)가 가리키는 위치를 position
에 저장한다.
따라서 인자로 전달되는 position
은 fpos_t
의 형을 가리키는 포인터 형태로 사용되어야 하며, 거의 대부분 fsetpos의 인자로만 사용하게 된다.
만일 파일 위치 지정자의 값을 정수형 데이터로 얻고 싶다면 ftell함수를 호출하면 된다.
인자
stream
스트림의 FILE
객체에 대한 포인터
position
fpos_t
객체를 가리키는 포인터
리턴값
이 함수는 성공적으로 값을 구하였다면 0 을 리턴하고 그렇지 않을 경우 0 이 아닌 값을 리턴한다.
실행 예제
/* 이 예제는 http://www.cplusplus.com/reference/clibrary/cstdio/fgetpos/ 에서 가져왔습니다. */ #include <stdio.h> int main() { FILE* pFile; int c; int n; fpos_t pos; pFile = fopen("myfile.txt", "r"); if (pFile == NULL) perror("Error opening file"); else { c = fgetc(pFile); printf("1st character is %c\n", c); fgetpos(pFile, &pos); for (n = 0; n < 3; n++) { fsetpos(pFile, &pos); c = fgetc(pFile); printf("2nd character is %c\n", c); } fclose(pFile); } return 0; }
myfile.txt
파일의 모습
실행 결과
위 예제에서 일단 myfile.txt
에서 문자 하나를 입력받는다. 그 이후, pos
에 현재의 파일 위치 지정자의 위치를 저장한다. 문자 하나를 입력 받았으므로 파일 위치 지정자는 두 번째 문자 (b) 를 가리킬 것이다.
그 후, for
문에서 fsetpos함수를 이용하여 파일 위치 지정자의 위치를 계속 pos
로 바꾼다.
즉, 문자를 입력 받더라도 파일 위치 지정자가 그 다음 문자를 가리키는 것이 아니라 fsetpos함수에 의해 계속 두 번째 문자만 가리키게 되는 것이다. 따라서 c d
가 출력되지 않고 계속 b b
만 출력되게 된다.
참고 자료
첫
댓글을 달아주세요!
강좌에 관련 없이 궁금한 내용은
여기를 사용해주세요
또는 직접 입력하세요 (댓글 수정시 비밀번호가 필요합니다)
댓글을 불러오는 중입니다..