Struct Array作为参数传递给read()问题

时间:2012-10-24 19:43:22

标签: c file-io

我有一个定义为

的结构
struct my_struct {
    struct hdr_str hdr;
    char *content; 
};

我试图通过将它作为参数嵌套到my()来传递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 *?

1 个答案:

答案 0 :(得分:2)

您需要为read分配内存以将数据复制到。

如果您知道要阅读的最大数据大小,可以将my_struct更改为

struct my_struct {
    struct hdr_str hdr;
    char content[MAX_CONTENT_LENGTH]; 
};

其中MAX_CONTENT_LENGTH由您定义为已知的最大长度。

或者,一旦知道要读取多少字节就按需分配my_struct.content

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

如果这样做,请确保稍后在my_struct.content上使用free将其内存返回给系统。