Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- FOR
- bitcoin
- write
- Sync
- Close
- API
- 리뷰
- 책
- install
- tcp
- Callback
- Golang
- c++
- File
- http
- Linux
- C
- JavaScript
- mutex
- GO 언어
- 영화
- go
- Python
- channel
- range
- go언어
- package
- windows
- json
- window
Archives
- Today
- Total
Code Habit
c/c++ 파일 크기만큼 파일 읽기 본문
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, 0, size + 1);// 파일 크기 +1바이트만큼 메모리 0으로 초기화
fseek(fp, 0, SEEK_SET); // 파일 포인터를 파일의 처음으로 이동시킴
count = fread(buffer, size, 1, fp); // hello.txt에서 파일 크기만큼 값을 읽음
fclose(fp); // 파일 포인터 닫기
delete(buffer); // 동적 메모리 해제
return 0;
}
|
fseek, ftell 함수를 이용해 파일의 크기를 먼저 구한 후 그 사이즈만큼 메모리를 할당해 파일 내용을 읽는다.
동적 메모리를 잡을때는 항상 초기화를 해주어야 한다. 아니면 끝에 널문자가 아닌 다른 값이 들어가 문자열이 깨질 수 있으므로 주의 !
출처 : dojang.io/mod/page/view.php?id=617