约结构简单的问题: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
我知道我可能已经做了一些错误的结构和指针和内存分配。在此先感谢:)
它会隐藏问题。一个12个字符的字符串仍然会出现段错误(在OP的代码中,或者在这个版本中是16)。 – Mel 2011-05-12 20:21:24
我不知道你的意思是“它会隐瞒问题”。这段代码工作得很好。我已经包含了整个代码,所以你明白了。 “分配足够的内存并确保您的字符串'\ 0'终止”的概念是当前上下文中的重点,而我的解决方案清晰地解决了这个问题。IMO – joce 2011-05-12 20:35:51
啊,16是故意的。认为这是一个错字。问题是你的结构体大小现在与你的fread不同步,你通常将它编码为fread(poffsets,1,sizeof(struct xint),pFile)' – Mel 2011-05-12 22:39:39