我有以下四種結構在我的計劃閱讀結構對象無效*指針
struct SType{
int type;//struct type
};
struct S1{
};
struct S2{
};
struct S3{
};
我使用下面的代碼保存這些結構的狀態在一個文件中:
空隙存儲(S型結構S1,空隙* S){
//open file and stuff //s points to either one of the last three structs fwrite(&s1,sizeof(s1),1,file); fwrite(s, size, 1, file); //structs are always saved in the file in pairs of SType and either one of the last three structs }
現在當我試圖從文件中使用下面的代碼檢索對的第二個結構時,我得到分段錯誤。那麼,如何使用fread()來檢索任意結構類型的對象呢?
void read(){
void *record;
//read struct SType object from the file
//now read the second struct of the pair
fread(record,size,1,file);
}
我們需要更多的代碼。我*猜測*是你沒有分配內存來讀取'struct'。儘量減少你的代碼以免「垃圾」給每個人,但是一個錯誤代碼的小實例將是完美的(而不是僞代碼) – noelicus
@noelicus我想讀取結構或者將其引用爲void *指針....當我讀結構時,結構對象read可以是s1,s2或s3的一種類型....稍後在我的代碼中,我將把void *指針轉換爲適當的結構類型指針。 – thunderbird
我的觀點是你已經將'read' *寫入有效的記憶*,並且我猜測你可能沒有那樣做。我不得不猜測,因爲你沒有包括代碼,這是我的另一點! – noelicus