저는 C++의 학습 과제로 간단한 TGA 이미지 파일 세이버를 작성하려고합니다. 헤더에 대한 구조체를 선언 한 다음 fread()를 사용하여 전체 헤더를 한 번에로드하는 예제 TGA 로더에 코드를 적용합니다.구조체를 파일에 쓸 때 너무 많은 바이트가 쓰여집니다.
내 프로그램이 현재 작동하지 않으며 파일에 두 개의 여분의 바이트가 기록되어있는 것처럼 보입니다. sizeof 제 구조체를 인쇄하고 두 바이트가 너무 큽니다 (정확한 18 대신 20). 약간의 독서 후 문제는 데이터 정렬 및 패딩과 관련이 있다고 생각합니다 (구조체를 저장하는 방법에 익숙하지 않습니다).
제 질문은이 문제를 해결하는 좋은 방법입니다. 내가 구조체의 구성 요소를 바이트 단위로 작성하는 대신 fwrite()를 사용하여 전체 구조체를 한 번에 쓸 수 있다고 생각한다. 나는 헤더를로드 할 때 작동한다면, 그것을 쓸 때도 작동한다고 생각했다. 내 가정이 틀렸어?