Index로 돌아가기
【기 능】 파일 포인터의 위치를 취득한다.
【소 속】 stdio.h
#include <stdio.h>
【서 식】
int fgetpos(FILE *fp, fpos_t *pos);
【설 명】
fp가 가리키는 파일 포인터의 현재 위치를 취득해서 pos에 넣어준다.
파일에서 읽기 쓰기를 하면 파일 포인트가 읽고 쓴 만큼 변동된다. 그 변동된 위치를 fgetpos()로 취득할 수 있다. 읽고 쓰는 위치를 지정하고 싶을 때는 fsetpos()로 설정 할 수 있다.
【인 수】
FILE *fp : file pointer. fopen함수로 오픈한 파일정보를 가지고 있는 핸들러
fpos_t *pos : 파일 포인터 저장소. fpos_t타입은 stdio.h에 설정되어 있다.
【리턴 값】
취득 성공시 : 0
취득 실패시 : 0이외의 수(에러의 종류는 errno로 확인할 수 있다. perror()참조)
【사용 예】
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
FILE *fp;
char strBuff[] = "Write some string!!\n";
fpos_t fpos, tmppos;
int iRetn;
/* 쓰기 모드로 파일을 오픈한다 */
if( (fp = fopen("test_data.txt", "w") ) == NULL ) {
printf("파일 오픈 에러\n");
exit(EXIT_FAILURE);
}
else{
printf("파일 오픈 성공\n");
}
/* 파일 포인터의 현재 위치를 취득한다 */
iRetn = fgetpos(fp, &fpos);
printf("파일 포인터의 초기 위치 = %ld\n", fpos);
/* 오픈한 파일에 한 줄의 문자열을 출력한다 */
iRetn = fputs(strBuff, fp);
if(iRetn == EOF){
printf("파일 출력 에러\n");
}
else{
printf("출력 문자열 = %s", strBuff);
printf("출력 문자열 사이즈 = %d\n", sizeof(strBuff));
}
printf("\n");
/* 파일 포인터의 현재 위치를 취득한다 */
iRetn = fgetpos(fp, &fpos);
printf("파일에 쓴 후, 파일 포인터의 현재 위치 = %ld\n", fpos);
/* 오픈한 파일을 닫는다(close) */
iRetn = fclose(fp);
if(iRetn != 0){
printf("파일 클로즈 에러\n");
}
else{
printf("파일 클로즈 성공\n");
}
return 0;
}
【결 과】
파일 오픈 성공
파일 포인터의 초기 위치 = 0
출력 문자열 = Write some string!!
출력 문자열 사이즈 = 21
파일에 쓴 후, 파일 포인터의 현재 위치 = 21
파일 클로즈 성공
Index로 돌아가기
C/C Library
fgetpos
반응형