반응형
파일 오프셋 지정
- 파일 오프셋 이동 : fseek(3)
- stream이 가리키는 파일에서 offset에 지정한 크기만큼 오프셋을 이동
- whence는 lseek과 같은 값을 사용
- fseek은 성공하면 0을 실패하면 EOF를 리턴
- 현재 오프셋 구하기 : ftell(3)
- 현재 오프셋을 리턴. 오프셋은 파일의 시작에서 현재 위치까지의 바이트 수
- 처음 위치로 오프셋 이동 ; rewind(3)
- 오프셋을 파일의 시작 위치로 즉시 이동
- 오프셋의 저장과 이동 : fsetpos(3), fgetpos(3)
- fgetpos: 파일의 현재 오프셋을 pos가 가리키는 영역에 저장
- fsetpos : pos가 가리키는 위치로 파일 오프셋을 이동
fseek 함수 사용
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | #include <stdlib.h> #include <stdio.h> int main(void) { FILE *fp; int n; long cur; char buf[BUFSIZ]; if ((fp = fopen("unix.txt", "r")) == NULL) { perror("fopen : unix.txt"); exit(1); } cur = ftell(fp); printf("Offset cur= %d\n", (int)cur); n = fread(buf, sizeof(char), 4, fp); buf[n] = '\0'; printf("-- Read Str=%s\n", buf); fseek(fp, 1, SEEK_CUR); cur = ftell(fp); printf("Offset cur=%d\n", (int)cur); n = fread(buf, sizeof(char), 6, fp); buf[n] = '\0'; printf("-- Read Str=%s\n", buf); cur = 12; fsetpos(fp, &cur); fgetpos(fp, &cur); printf("Offset cur=%d\n", (int)cur); n = fread(buf, sizeof(char), 13, fp); buf[n] = '\0'; printf("-- Read Str=%s\n", buf); fclose(fp); return 0; } |
반응형
'Programming > C/C++' 카테고리의 다른 글
C/고수준 파일 입출력/임시 파일 생성 (0) | 2017.10.26 |
---|---|
C/고수준 파일 입출력/파일 포인터와 파일 기술자간 변환 (0) | 2017.10.26 |
C/고수준 파일 입출력/형식 기반 입출력 함수 (0) | 2017.10.26 |
C/고수준 파일 입출력/버퍼 기반 입출력 함수 (0) | 2017.10.26 |
C/고수준 파일 입출력/문자열 기반 입출력 함수 (0) | 2017.10.26 |