2012-10-24 4 views
0

나는 구조체가 읽을 수있는 매개 변수로 모든 중첩에 의해구조체의 배열을 읽기() 문제

struct my_struct { 
    struct hdr_str hdr; 
    char *content; 
}; 

내가 my_struct의 첫 번째 요소의 my_struct에 내용을 전달하려고로 정의

struct my_struct[5]; 

읽기

ssize_t read(int fd, void *buf, size_t count); 
()로 정의되어

내가 가지고있는 것은

내가

read(fd, my_struct[0].content, count) 

로 전달하려고하지만 수신하고 -1 반환 값으로, errno를 = EFAULT과 (잘못된 주소)

어떻게 어떤 생각이에 읽기 읽기하려면 char * 구조체 배열에?

답변

2

데이터를 복사하려면 read의 메모리를 할당해야합니다. 당신이 읽을 수 있습니다 데이터의 최대 크기를 알고있는 경우

, 당신은

MAX_CONTENT_LENGTH는 #이 알려진 최대 길이로하여 define'd됩니다
struct my_struct { 
    struct hdr_str hdr; 
    char content[MAX_CONTENT_LENGTH]; 
}; 

에 my_struct을 변경할 수 있습니다. 당신이 이렇게하면

my_struct.content = malloc(count); 
read(fd, my_struct[0].content, count); 

을 읽는 방법 바이트 알면

또는 필요에 따라 my_struct.content를 할당, 나중에 시스템에 메모리를 반환하는 my_struct.content에 free을 사용해야합니다.

관련 문제