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 |
29 | 30 | 31 |
Tags
- http
- Close
- channel
- window
- Callback
- Linux
- C
- install
- go
- go언어
- 리뷰
- write
- FOR
- 책
- File
- windows
- 영화
- Golang
- c++
- range
- JavaScript
- Python
- GO 언어
- json
- mutex
- API
- bitcoin
- Sync
- tcp
- package
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