C 结构体 : segmentation fault

标签 c struct segmentation-fault

关于结构的简单问题:

struct xint {
     int number;
     char string[12];
};

int main(int argc, char *argv[])
{
  struct xint offsets, *poffsets;
  poffsets=&offsets;
  FILE * pFile = fopen("file","rb");
  fread(poffsets,1,16,pFile);
  printf("Number %d\nString %s\n",offsets.number,offsets.string);
}

我得到这个输出

Number 12345
Segmentation fault

我知道我可能在结构、指针和内存分配方面做错了一些事情。预先感谢:)

最佳答案

您的问题是您直接从文件中读入结构,而不检查结构对齐。改为这样做:

  fread(&offset.number,1,sizeof(offsets.number),pFile);
  fread(&offset.string,1,sizeof(offsets.string),pFile);

关于C 结构体 : segmentation fault,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5983089/

相关文章:

c++ - 如何释放 C++ 中的结构和对象数组?

struct - 方法 `mul` 的特征类型不兼容

node.js - 这个错误 “Attempt to free unreferenced scalar”是什么?

有人可以告诉我给定代码中第二个 printf 语句中的引用流吗?

c - 我怎么能再次 "turn on"标准输出?

在 C 中从命令行创建数组

c - 分段核心转储

c - 如何使用 ANSI C 删除文件中的字符串?

c - 在自身内部定义结构对象的问题

c - 填充结构 C 时出现段错误,缩小为一行