사용범위
Windows, Unix 등 모든 OS에서 사용가능한 표준 API 함수
기능
C언어 표준 함수로 파일의 시작을 기준으로 stream 의 현재 오프셋을 구한다.
헤더
#include <stdio.h>
※ ftell 함수 사용시 stdio.h 파일을 include 하지 않는다면 컴파일시 error 발생 ※
함수
long ftell(FILE* file);
파라미터
- FILE* file
- fopen 함수를 통해 열린 file stream을 입력한다.
- fopen 함수를 통해 열린 file stream을 입력한다.
반환값
성공시 파일의 시작을 기준으로 현재 파일 stream 의 offset 위치를 반환한다.
실패시 -1 을 반환한다.
잡학지식
ftell 함수는 fseek 함수와 같이 사용되는 경우가 많다.
fseek 함수의 SEEK_END 를 사용하여 파일 포인터를 파일의 끝으로 이동시킨 후 ftell 함수를 사용하여 시작기준의 offset 을 구한값이 파일의 크기이기 때문이다.
<소스 코드>
#include <stdio.h>
int main() {
FILE *fp;
long offset;
int ret;
fp = fopen("test.txt", "w");
if (fp != NULL) {
fprintf(fp, "abcdefghijklmnopqrstuvwxyz");
fclose(fp);
} else {
// fopen 실패
}
fp = fopen("test.txt", "r");
if (fp != NULL) {
// 최초 offset
offset = ftell(fp);
if (offset != -1) {
printf("First offset[%ld]\n", offset);
} else {
// ftell 함수 실패
}
// 파일의 마지막 위치(SEEK_END) 에 파일 포인터를 이동
ret = fseek(fp, 0 ,SEEK_END);
if (ret == 0) {
// 파일의 마지막 위치(SEEK_END) 의 offset
offset = ftell(fp);
if (offset != -1) {
printf("(File Size) Last offset[%ld]\n", offset);
} else {
// ftell 함수 실패
}
} else {
// fseek 함수 실패
}
fclose(fp);
}
return 0;
}
< test.txt >
abcdefghijklmnopqrstuvwxyz
※ 실행 결과
First offset[0]
(File Size) Last offset[26]
반응형
'C언어 > stdio.h' 카테고리의 다른 글
[C언어] ferror 함수 (stdio.h) (0) | 2022.09.05 |
---|---|
[C언어] feof 함수 (stdio.h) (0) | 2022.09.04 |
[C언어] fseek 함수 (stdio.h, 파일 stream 오프셋 변경) (0) | 2022.08.31 |
[C언어] freopen 함수 (stdio.h) (0) | 2022.08.26 |
[C언어] remove 함수 (stdio.h) (0) | 2022.08.23 |