我正在尝试使用系统调用填充struct
值。我最初的努力如下。但是我从打印语句中得到垃圾值。
int fd;
int nbytes;
struct message {
char *from;
char *to;
int size;
};
struct message m1={"me","you",10};
struct message m2;
fd=creat("structfile",0644);
nbytes=write(fd,&m1,sizeof(m1));
read(fd,&m2,nbytes);
printf("%s %s %d",m2.from,m2.to,m2.size);
还有其他方法可以做到这一点吗? (我正在考虑通过调用 gethostbyname
和 readdir< 来直接填充诸如
分别)hostent
和 dirent
之类的结构的方式
最佳答案
问题 1:
fd
在哪里初始化的?
问题2:
线路
nbytes=write(fd,&m1,sizeof(m1));
写入指针m1.from
和m1.to
的数值。它不会写入它们指向的字符串。
如果要写入m1
的内容,则必须序列化m1.from
和m1.to
的内容。有用于此目的的库。您可以从 How to serialize data in C 看到一些引用资料.
关于c - 用于填充结构值的系统调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25028553/