이름에 필드가있는 "승객"구조체가 있다고 가정 해 보겠습니다.왜 fread를 C에서 사용할 때 구조체를 char * 형식으로 변환하겠습니까?
는 (내 책의 구문을 보여줍니다처럼) 내가 할 경우
fread(&passenger, sizeof(Passenger), 1, in_fp);
printf("%s", (*passenger).first_name)
나는 세그먼트 오류를 얻을 수 있지만 내가 할 경우 : 파일에서 읽어
fread((char *)passenger, sizeof(Passenger), 1, in_fp);
printf("%s", (*passenger).first_name)
이름이 될 것입니다 인쇄.
작은 스타일 제안 : 'passenger-> first_name'은 포인터를 통해 구조체 필드에 액세스하는 일반적인 (그리고 더 읽기 쉬운) 방법입니다. 그것은 정확히 당신이 사용했던 표현과 같습니다.'(* passenger) .first_name' - 이것은 당신의 문제와 아무런 관련이 없습니다. 이것은 단지 더 받아 들여진 스타일 일뿐입니다. –