約結構簡單的問題: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