所以我建立了一個鏈表並從文件中讀取數據,完成了一些計算和操作,現在我想把新列表存儲到一個二進制文件中。寫一個鏈表到二進制文件(C)
這裏是我的結構設置:
typedef struct Comp{
char name[5];
char node1[5], node2[5];
float value; //value
}ComponentType;
typedef struct ListNodeT{
ComponentType Component;
float voltage, power, current;
struct ListNodeT *nextPtr;
}ListNodeType;
在一個單獨的功能,我試圖寫AA文件:
FILE *filePtr;
char fileName[13] = "SaveData.bin";
filePtr = fopen(fileName, "wb");
int index = 0;
while (CircuitData != NULL)
{
fwrite(CircuitData, sizeof(ListNodeType), 1, filePtr);
CircuitData = CircuitData->nextPtr;
index++;
}
上面的代碼不工作,所以現在我的問題是,能我使用單個fwrite(CircuitData,sizeof(ListNodeType),1,filePtr)寫入文件,或者我應該按如下方式單獨編寫每個組件:
fwrite(CircuitData->Component.name, sizeof(CircuitData->Component.name), 1, filePtr);
我應該怎麼做?我的第二個問題是,如何將這個二進制文件再次讀回Struct中?
打開文件後是否檢查過'filePtr'的值?可能是它的'NULL'。 –
嗯,我可以打開二進制文件,看到寫了一些東西。 – Ace
「不工作」是什麼意思? (段錯誤,奇怪的值,意外的結果)? –