fread(), fwrite() 사용법?

익명 사용자의 이미지

이진 파일로 쓰기를 하려고 하면서
fread(), fwrite()헤더를 봤습니다.

size_t fread( void *dest, size_t size, size_t mem, FILE *fp );
size_t fwrite( const void *dest, size_t size, size_t mem, FILE *fp );

FILE *에서 dest의 내용을 읽고 쓴다는 것은 알겠습니다.
그리고 두번째 파라미터 size는 그 크기이고...

그런데 mem의 내용은 무엇인지 잘 모르겠습니다.
어디에도 이것은 "자료의 개수"라고만 되어있어,
구체적인 의미를 찾지 못했습니다.

쓸 때는 여기에 size와 같은 값을 주어 호출하기는 했습니다만...
원래 이렇게 쓰도록 파라미터를 분리하지를 않았을 것이고...

혹시 구조체 멤버의 개수를 가리키는 걸까요?
(그럼 구조체가 아닌 데이터를 읽고 쓸 때는 뭐가 되라고?)

익명 사용자의 이미지

두번째 arg인 size는 자료의 개당 byte수를 의미합니다.
세번째 arg인 mem은 저장하고자 하는 자료의 갯수,

즉 다음과 같은경우

#define MAXCOUNT 10

struct {
...
} MyData;

MyData *pBuffer = (MyStruct *)malloc(sizeof(MyData) * MAXCOUNT);

fread(pBuffer, sizeof(MyData), MAXCOUNT, fp);

이런식이 되겠죠.