C 结构:分段错误 [英] C structs: segmentation fault

查看:38
本文介绍了C 结构:分段错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

关于结构的快速问题:

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

我知道我可能在结构和指针以及内存分配方面做错了.提前致谢:)

I know I've probably done something wrong with structures and pointers and memory allocation. Thanks in advance :)

推荐答案

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

Your problem is you're directly reading into a struct from the file, without checking struct alignment. Do this instead:

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

这篇关于C 结构:分段错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆