바이너리 파일 입출력하는 부분이 잘 이해가 안가요ㅠㅠ
102
작성한 질문수 21
이 강의에서 나온 3가지 버전에서 동작을 보면 구조체를 초기화한 내용을 텍스트 파일 안에 저장하고, 텍스트 파일의 내용을 변경하여 다시 읽어들인 다음에 콘솔창에 출력하는 것으로 이해했습니다. 이중포인터를 사용하는 부분은 잘 이해하진 못했지만 구조체 포인터로 하는 부분은 구현도 했구요. 근데 바이너리 파일의 경우에는 단순히 읽거나 쓰는 용도로 사용하는 것이지 별도의 파일 편집기로 내용을 수정하기가 거의 불가능하다고 생각하고 있었는데 제 생각이 틀린걸까요? 그냥 교수님이 쓰신 코드를 따라 쳐봤지만 이게 무슨 의미를 가지는 것인지 잘 이해가 안갑니다... 바이너리 파일 입출력을 사용하는 경우 read_books 함수의 사용처가 뭔가요?
답변 1
1
안녕하세요? 질문&답변 도우미 Soobak 입니다.
좋은 궁금증이시네요.
우선, 파일 입/출력 과정에서 텍스트 스트림 입/출력과 바이너리 스트림 입/출력의 차이점에 대해서 점검해보시면 도움이 되실 것 같습니다.
바이너리 파일 입출력은 텍스트 입출력보다 일반적으로 더 빠르고, 공간 효율적이며, 데이터의 정확한 비트 표현을 유지하는 데이터 무결성 등등 많은 장점들이 있습니다.
교수님께서 강의 중 자주 언급해주신 것처럼, 이러한 장점들로 인하여 실무에서는 텍스트 파일 보다는 바이너리 파일을 주로 다루게 됩니다.
하지만, 말씀해주신 내용처럼 바이너리 파일은 파일 편집기를 통해서 직접 편집하거나 사람이 살펴보는 것이 어렵습니다.
(이 부분은 강의 13.1 파일 입출력의 작동 원리 의 5:00 부분부터의 교수님 설명을 참고해보시면 도움이 되실 것 같습니다. 만약, 여유가 되신다면 해당 섹션의 강의들을 복습해보시는 것도 추천 드립니다. 특히, 해당 섹션의 마지막 강의 13.8 텍스트 파일을 바이너리 처럼 읽어보기 까지 다시 한 번 훑어 보신다면, 질문자님께서 현재 학습 진도까지 얻으신 지식들을 바탕으로, 처음 학습하실 때 보다 더 많은 것들이 보이고 여러 개념들을 더 잘 연결지어서 이해하실 수 있을 것 같습니다.)
따라서, 궁금해하시는 read_books() 함수를 포함하여, 해당 강의의 write_books() 함수, print_books() 함수 등으로 '바이너리 파일' 의 데이터를 읽어들이고, 콘솔 창에 데이터를 출력해보고, 수정하는 프로그램을 구성하여 '바이너리 파일' 을 다루는 것입니다.
예를 들어, read_books() 함수 내에서 fopen() 함수의 두 번째 인수 "rb" 의 "b" 는 바이너리 모드로 파일을 열겠다는 의미로 사용됩니다.
Export template 안됨
1
33
2
완전히 똑같이 따라해도 exe파일이 안만들어져서 실행이 안됩니다.
1
58
3
main 함수에서 왜 int만 선언이 되는걸까요
1
58
2
8비트 2진수 변환시 왜 1을 더해야하나요?
1
55
2
혹시 강의를 빠르게 수강하려면 어디서부터 듣는게 좋을까요?
1
50
1
프로토타입과 함수간의 인자 불일치
1
74
2
12.12 헤더 관련 질문
1
61
2
Visual Studio Community 2026 사용 문의
1
139
2
Q. 15:30, 부호가 있는 8비트 정수 질문
1
62
2
getchar(), putchar()
1
95
3
강의자리ㅛ
1
81
2
비주얼스튜디오코드로 공부해도 상관없나요?
1
115
2
소스파일안에 여러 파일
1
77
2
F5와 F7의 차이
1
80
2
c = TWO * (a+b); 에서 a와 b는?
1
61
2
; 세미콜론을 붙이는 기준에 문의
1
71
1
Step over 기능 문의
1
54
2
2.6 강의 따옴표 출력 규칙 문의
1
77
2
int main 함수 관련 오류 문의
1
68
2
13.4 words[0]
0
62
2
11.7 함수를 구현해 봤습니다.
1
63
2
11.6 직접 strcmp와 strncmp를 구현해 보았습니다.
1
66
2
11.6 my_strcat과 my_strncat을 구현해봤습니다.
1
54
2
11.6 fit_str함수를 구현해 봤습니다.
1
55
2





