카테고리 없음
C 언어 fread 함수 사용법
레퍼러
2025. 4. 20. 15:30
C 언어 fread 함수 사용법
fread 함수는 C 언어에서 바이너리 형식으로 데이터를 파일에서 읽어올 때 사용되는 함수입니다. 파일 입출력을 다룰 때 매우 유용하게 활용되며, 특히 구조체나 버퍼 단위로 데이터를 읽을 때 자주 사용됩니다.
1. 함수 원형
size_t fread(void *ptr, size_t size, size_t count, FILE *stream);
매개변수 설명:
- ptr: 읽은 데이터를 저장할 메모리 버퍼의 포인터
- size: 읽을 데이터 단위의 크기 (바이트 단위)
- count: 읽을 데이터 단위의 개수
- stream: 파일 포인터 (fopen으로 연 파일)
반환값: 실제로 읽은 데이터 단위의 개수 (예: count보다 작을 수 있음)
2. 기본 사용 예제
#include <stdio.h>
int main() {
FILE *fp;
char buffer[20];
fp = fopen("example.txt", "rb");
if (fp == NULL) {
perror("파일 열기 실패");
return 1;
}
size_t result = fread(buffer, sizeof(char), sizeof(buffer), fp);
printf("읽은 바이트 수: %zu\n", result);
buffer[result] = '\0'; // 문자열 종료 문자
printf("읽은 내용: %s\n", buffer);
fclose(fp);
return 0;
}
출력 예시:
읽은 바이트 수: 18
읽은 내용: Hello, fread demo
3. 구조체 읽기 예제
#include <stdio.h>
typedef struct {
int id;
float score;
} Student;
int main() {
FILE *fp;
Student s;
fp = fopen("student.dat", "rb");
if (fp == NULL) {
perror("파일 열기 실패");
return 1;
}
if (fread(&s, sizeof(Student), 1, fp) == 1) {
printf("ID: %d, 점수: %.2f\n", s.id, s.score);
} else {
printf("데이터 읽기 실패\n");
}
fclose(fp);
return 0;
}
4. 주의할 점
- 파일 모드: fread는 바이너리 파일에서 사용되는 함수이므로 파일을 열 때 "rb" 또는 "rb+" 모드를 사용하는 것이 좋습니다.
- 파일 끝 처리: feof 함수를 사용해 파일 끝(EOF) 여부를 확인할 수 있습니다.
- 에러 처리: ferror 함수로 에러 여부를 검사할 수 있습니다.
- 읽은 개수 확인: 반환값이 요청한 count보다 적으면 파일 끝에 도달했거나 에러가 발생했을 수 있습니다.
5. 결론
fread 함수는 파일에서 데이터를 블록 단위로 효율적으로 읽을 수 있게 해주는 매우 유용한 함수입니다. 특히 구조체나 버퍼 데이터를 읽을 때 자주 사용되며, fwrite와 함께 파일 입출력을 처리할 때 필수적으로 알아두어야 할 함수입니다. 올바른 사용법과 주의사항을 숙지하여 안정적인 프로그램을 작성해보세요!