#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
long GetFileSize(FILE*);
int main(void) {
char str[100];
FILE* fp = fopen("D:\\whatsize.txt", "rt");
fgets(str, 100, fp);
fputs(str, stdout);
printf("파일의 크기 : %ld \n", GetFileSize(fp));
fgets(str, 100, fp);
fputs(str, stdout);
// GetFileSize 함수가 잘 구현됐다면, 파일에 저장돼 있는 문자열들이 순서대로 출력될 것이다.
printf("파일의 크기 : %ld \n", GetFileSize(fp));
fgets(str, 100, fp);
fputs(str, stdout);
// GetFileSize 함수가 잘 구현됐다면, 파일에 저장돼 있는 문자열들이 순서대로 출력될 것이다.
fclose(fp);
return 0;
}
long GetFileSize(FILE* fp) {
long fpos;
long fsize;
fpos = ftell(fp);
fseek(fp, 0, SEEK_END);
fsize = ftell(fp);
fseek(fp, fpos, SEEK_SET);
return fsize;
}
GetFileSize 함수를 분석해보겠다.
long GetFileSize(FILE* fp) {
long fpos;
long fsize;
fpos = ftell(fp);
//초기 위치를 백업해둔다.
fseek(fp, 0, SEEK_END);
// fp 파일 맨 끝 EOF로 간다.
fsize = ftell(fp);
// fp 파일 맨 끝 EOF의 바이트 값을 fsize에 저장한다.
fseek(fp, fpos, SEEK_SET);
return fsize;
}