반응형
fseek
(스트림 위치 지정자 이동)
C |
#include <stdio.h> |
C++ |
#include <cstdio> |
fseek(FILE* fileStream, long int offset, int origin);
- origin 인자로 전달된 위치로 부터 offset 만큼 더해진 위치로 위치 지정자(poistion indicator)를 이동시킴
origin 인자로 들어가는 매크로 상수들이 존재한다, 해당 위치로 이동하고 싶으면
fseek(pFile, 0, SEE_SET); // 시작위치로 이동
처럼 호출하면 된다
SEEK_SET |
파일의 시작 |
SEEK_CUR |
현재 파일 포인터의 위치 |
SEEK_END |
파일의 끝 |
주의 : 텍스트 파일에 fseek 함수를 사용할때, offset 인자로 0이 아닌 값 혹은 ftell 함수에 의해 반환된 값을 사용할 때에는 일부 플랫폼에서는 문제가 생겨서, 예상치 못했던 위치로 이동할 수 도 있음
ftell
(스트림 위치 지정자의 현재 위치를 알려줌)
C |
#include <stdio.h> |
C++ |
#include <cstdio> |
long int ftell(FILE* stream);
- fseek함수와 같이 써서 파일의 크기를 알아내는데 사용한다
- 이진(binary) 스트림의 경우, 리턴된 값은 파일의 시작 부분에서 현재위치 까지의 바이트 수를 말함
- 텍스트(txt) 스트림의 경우, 보이지 않는 문자( Line Feed , Carriage Return, ...) 등등도 포함한 바이트 수가 나오게 된다
- LF : Line Feed, 현재 위치에서 바로 아래로 이동 \n
- CR : Carriage Return, 커서의 위치를 앞으로 이동 \r
fseek + ftell 로 파일 크기 알아내기
ex1)
반응형
'C' 카테고리의 다른 글
memset, memcpy, memmove (0) | 2020.03.13 |
---|---|
expression(표현식) (0) | 2020.03.12 |
Local Variable, Global Variable, Static Variable (0) | 2020.02.28 |
FileStream Input Output (0) | 2020.02.22 |