Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
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
Archives
Today
Total
관리 메뉴

Code Habit

c/c++ 파일 크기만큼 파일 읽기 본문

카테고리 없음

c/c++ 파일 크기만큼 파일 읽기

코드베어 2020. 9. 27. 17:55

c언어 함수인 fopen을 이용해 파일을 열고 파일의 크기를 먼저 구한 후 크기만큼 파일을 읽는 예제이다.

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
int main(void)
{
    char* buffer;
    int size;
    int count;
 
    FILE *fp = fopen("test.txt""r");
    if (NULL == fp) {
        return -1;
    }
 
    fseek(fp, 0, SEEK_END); // 파일 포인터를 파일의 끝으로 이동시킴
    size = ftell(fp);        // 파일 포인터의 현재 위치를 얻음 => 파일 사이즈
 
    buffer = new char[size+1];    // 파일 크기 + 1바이트(문자열 마지막의 NULL) 만큼 동적 메모리 할당
    memset(buffer, 0size + 1);// 파일 크기 +1바이트만큼 메모리 0으로 초기화
 
    fseek(fp, 0, SEEK_SET);                // 파일 포인터를 파일의 처음으로 이동시킴
    count = fread(buffer, size1, fp);    // hello.txt에서 파일 크기만큼 값을 읽음
 
    fclose(fp);        // 파일 포인터 닫기
    delete(buffer);    // 동적 메모리 해제
 
    return 0;
}

 

fseek, ftell 함수를 이용해 파일의 크기를 먼저 구한 후 그 사이즈만큼 메모리를 할당해 파일 내용을 읽는다.

동적 메모리를 잡을때는 항상 초기화를 해주어야 한다. 아니면 끝에 널문자가 아닌 다른 값이 들어가 문자열이 깨질 수 있으므로 주의 !

 

출처 : dojang.io/mod/page/view.php?id=617