在C中编写和读取结构?

时间:2014-02-12 02:15:08

标签: c file struct io fread

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

  

struct interest * p = malloc(256);

并在struct中分配变量:

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

在我打开输出文件之后,我将这个结构写入它:

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

这是我的第一个问题,如果我想写一个结构p,将它作为“& p”正确吗?

假设我已成功编写它,我想知道从output_file读取结构。 然后我继续:

...#open the outputfile for reading
  

struct interest * buff = malloc(256);

     

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

当我尝试打印buff的num或size时,我得到了一个分段错误。

什么 这是正确的做法吗?

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

感谢。

2 个答案:

答案 0 :(得分:0)

错误1)

你不能这样做:

p -> name = "jacky"

使用:

strcpy(p->name, "jacky");

代替。

错误2)

Struct有一个固定的长度,你正在为它分配256个字节?也许你想要的是:

 struct interest *p =malloc(sizeof(struct interest));

错误3)

使用:

fwrite(p,sizeof(struct interest), 1, output_file);

p已经是一个指针

发布你的结构声明。你可能会遇到更多问题。

答案 1 :(得分:0)

首先,你应该

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))