本文介绍了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 结构:分段错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!