윤성우의 열혈 C 프로그래밍 - 파일의 크기를 바이트 단위로 계산하기[24-2]

Yumin Jung·2023년 10월 17일
0

해설지 참조 하였음.

#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;
}
profile
문과를 정말로 존중해

0개의 댓글