c - 在 C 中写入和读取结构体?

标签 c file struct io fread

所以首先我创建我的结构:

struct interest *p =malloc(256);

并在结构体中分配变量:

  p -> num = 1;
  p -> size = 2;
  p -> name = "jacky";

打开输出文件后,我向其中写入以下结构:

 fwrite(&p,sizeof(p), 1, output_file);

这是我的第一个问题,如果我想写一个struct p,把它写成“&p”正确吗?

假设我已经成功编写了它,并且我想知道从我的输出文件中读取结构。 然后我继续:

...#open the outputfile for reading

struct interest *buff = malloc(256);

fread(&buff, sizeof(buff),1,output_file);

当我尝试打印 buff 的编号或大小时,出现段错误..

什么 正确的做法是吗?

我想打印它的原因是因为我想检查我是否真的将该结构写入了输出文件。

谢谢。

最佳答案

首先,你应该做

p = malloc(sizeof(struct interest))

其次,pbuff已经是指针了,你应该这样写:

fwite(p, sizeof(struct interest), fp)
fread(buff, sizeof(struct interest), fp)

最后,要复制字符串,您应该编写

<string.h>
strncpy(p->name, "jacky", sizeof(p->name))

关于c - 在 C 中写入和读取结构体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21717271/

相关文章:

c++ - 将宏参数转换为字符串常量并考虑逗号

c - 如何将用户数据传递给回调函数

c - 如何删除C中上面几行的书面文字?

c - gtktreeview 在示例中工作正常,但一旦复制到应用程序中就会停止

c - 如何构建每个函数调用或宏只有一个字段的结构?

c - 在 C 中使用 memcpy 将数组复制到结构,反之亦然

c - 从 C 中的偶数地址中删除字节

c - 读取 .tar.gz 文件

java - 如何检查文件内容是否为空

c++结构与对齐成员的对齐方式