C,C++ & Linux
C/C++ fseek(3), fseeko(3)
KyooDong
2020. 5. 22. 11:23
728x90
함수 기능
파일 오프셋 포인터를 이동시키는 함수입니다.
파일을 읽거나 쓸 때 오프셋 포인터 위치에 작업이 일어납니다. 쉽게 생각해서 커서라고
fseeko() 함수는 offset 을 off_t 타입으로 표현합니다. 이는 long 보다 큰 타입으로, long 형으로 오프셋을 표현할 수 없는 매우 큰 파일에 대해 사용합니다.
함수 원형
#include <stdio.h>
int fseek(FILE *fp, long offset, int whence);
int fseeko(FILE *fp, off_t offset, int whence);
매개변수
fp
대상 파일 포인터
offset
이동시킬 파일 오프셋
양수, 0, 음수 모두 가능합니다.
whence
기준점
SEEK_SET : 파일의 맨 처음
SEEK_CUR : 현재 파일 오프셋
SEEK_END : 파일의 맨 끝
반환값
성공 시 0 리턴
에러 시 0이 아닌 정수 리턴
예제
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char *argv[]) {
char *fname = "ssu_test.txt";
FILE *fp;
long position;
int character;
if ((fp = fopen(fname, "r")) == NULL) {
fprintf(stderr, "fopen error\n");
exit(1);
}
printf("Input number >> ");
scanf("%ld", &position);
if (fseek(fp, position - 1, SEEK_SET)) {
fprintf(stderr, "fseek error\n");
exit(1);
}
character = getc(fp);
printf("%ld번째 글자는 %c 입니다.\n", position, character);
exit(0);
}
결과
리눅스시스템프로그래밍 저자 : 홍지만
https://book.naver.com/bookdb/book_detail.nhn?bid=14623672
책에 기술된 예제 프로그램입니다. 책 내부에는 훨씬 더 많은 자료가 있습니다. (개인적으로 좋았습니다.)