用C写和读结构?

用C写和读结构?,c,file,struct,io,fread,C,File,Struct,Io,Fread,因此,首先我创建了我的结构: 结构利息*p=malloc256 并在结构内部分配变量: p -> num = 1; p -> size = 2; p -> name = "jacky"; 打开输出文件后,我将此结构写入其中: fwrite(&p,sizeof(p), 1, output_file); 这是我的第一个问题,如果我想写一个结构p,把它放在as&p上是否正确 假设我已经成功地编写了它,我想知道如何从我的输出文件读取结构。 然后,我开始: ..

因此,首先我创建了我的结构:

结构利息*p=malloc256

并在结构内部分配变量:

  p -> num = 1;
  p -> size = 2;
  p -> name = "jacky";
打开输出文件后,我将此结构写入其中:

 fwrite(&p,sizeof(p), 1, output_file);
这是我的第一个问题,如果我想写一个结构p,把它放在as&p上是否正确

假设我已经成功地编写了它,我想知道如何从我的输出文件读取结构。 然后,我开始:

...#open the outputfile for reading
结构兴趣*buff=malloc256

fread&buff,sizeofbuff,1,输出文件

然后,当我试图打印buff的num或size时,我会遇到一个分段错误

什么 正确的方法是什么

我之所以要打印它,是因为我想检查我是否真的将该结构写入了输出文件

谢谢。

错误1

你不能这样做:

p -> name = "jacky"
使用:

相反

错误2

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

 struct interest *p =malloc(sizeof(struct interest));
错误3

使用:

p已经是指针了

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

首先,您应该

p = malloc(sizeof(struct interest))
第二,p和buff已经是指针了,你应该写:

fwite(p, sizeof(struct interest), fp)
fread(buff, sizeof(struct interest), fp)
最后,要复制字符串,您应该

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

你能发布一个最小的程序来重现你的错误,而不仅仅是几行代码吗?谢谢!对于第一个,我是否应该将p声明为struct packet*p;第一另外,如果名称本身就是一个指针呢?我想把名字指向杰基?谢谢!如果名称本身就是一个指针呢?我想把名字指向杰基?
fwite(p, sizeof(struct interest), fp)
fread(buff, sizeof(struct interest), fp)
<string.h>
strncpy(p->name, "jacky", sizeof(p->name))