2017년 1월 8일 일요일

[C&C++] fseek , ftell, lseek ,사용 정리








매번 찾아보는 게 귀찮아서 정리.

함수 
int fseek(FILE * stream, long offset, int whence)

헤더 
stdio.h

인자 정보
FILE *stream (파일 포인터)
long offset (이동할 크기)
int whence (어디서 부터 이동할지의 위치)

whence의 경우, 정의된 값 혹은 상수값 사용 가능
SEEK_SET = 파일 시작 부
SEEK_CUR = 현재 파일 포인터 위치
SEEK_END = 파일 끝


반환 값
0(성공) or -1(실패)





























함수 
long ftell(FILE * fp)

헤더 
stdio.h

인자 정보
FILE *fp (파일 포인터)


반환 값
현재 파일포인터의 위치(성공) , -1(에러)






fseek + ftell을 사용하면 파일 사이즈를 구할 수 있다.

fseek(fp, 0, SEEK_END);
int file_size = ftell(fp);
fseek(fp, 0, SEEK_SET);
/*
do File Work
*/









함수 
off_t lseek(int file_des, off_t offset, int whence) (Linux 기반)

헤더 
unistd.h

인자 정보
int file_des (파일 디스크립터)
off_t offset (이동할 크기)
int whence (어디서 부터 이동할지의 위치)

반환 값
현재 파일포인터의 위치(성공) , -1(에러)


fseek와 차이점은 FILE 포인터를 쓰냐 디스크립터를 쓰냐의 차이.


파일 Size를 구할 때,

int file_size = lseek (fd , 0 , SEEK_END);
/*
 do File Work
*/

로 사용




[출처]
http://forum.falinux.com/zbxe/index.php?document_srl=408250&mid=C_LIB

댓글 1개: