c - 用于填充结构值的系统调用

标签 c pointers struct system-calls

我正在尝试使用系统调用填充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);

还有其他方法可以做到这一点吗? (我正在考虑通过调用 gethostbynamereaddir< 来直接填充诸如 hostentdirent 之类的结构的方式 分别)

最佳答案

问题 1:

fd 在哪里初始化的?

问题2:

线路

nbytes=write(fd,&m1,sizeof(m1));

写入指针m1.fromm1.to的数值。它不会写入它们指向的字符串。

如果要写入m1的内容,则必须序列化m1.fromm1.to的内容。有用于此目的的库。您可以从 How to serialize data in C 看到一些引用资料.

关于c - 用于填充结构值的系统调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25028553/

相关文章:

c - *列表和**列表之间的区别

c++ - 字符到整数 - C++

c - 分配内存并使其在退出后保留在那里

c - 套接字 accept() 返回描述符是阻塞的还是非阻塞的?

c++ - 检查 NULL 值 C++ 的引用

c# - C# visual studio 编译器如何处理 struct/NULL 比较?

c++ - 给定代码中是否存在未定义的行为?

c - 为什么 C 没有二进制文字?

c - 程序崩溃,无法解释原因?

pointers - 为什么更改指针的副本不会影响初始对象