我有一个定义为
的结构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 *?
答案 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
将其内存返回给系统。