Как записать структуру в бинарный файл?
есть двусвязный список, с помощью него считывается/записывается информация в бинарный файл
typedef struct data{
char name[16];
char sex[16];
char sport[16];
int birthday;
int growth;
}dataT;
typedef struct node{
dataT* data;
struct node* next, *prev;
}node;
typedef struct hwnd{
size_t size;
node* head, *tail;
}hwnd;
int main(int agrc, char** argv)
{
char s[16], c; int x;
hwnd* hwnd = createHwnd();
FILE* file = fopen("vector", "rb+");
unloadData_FromFile(file, hwnd);
//список обновляется, перезаписываем файл
file = fopen("vector", "wb+");
uploadData_ToFIle(file, hwnd->head);
return 0;
}
функции считывания записи
void unloadData_FromFile(FILE* file, hwnd* hwnd)
{
dataT* pData = (dataT*)malloc(sizeof(dataT)); //память под данные узла
while(fread(pData, sizeof(dataT), 1, file))
{
node* temp = (node*)malloc(sizeof(node)); //память под узел
temp->data = pData;
uploadList(temp, hwnd);//добавляем узел в список
}
fclose(file);
return;
}
void uploadData_ToFIle(FILE* file, node* head)
{
while(head){
fwrite(head->data, sizeof(dataT), 1, file);
head = head->next;
}
fclose(file);
}
Считывание из файла в структуру работает, запись из структуры в файл работает не корректно (н-р, было 9 записей в структуре, в файл 9 раз запишется последний элемент) Почему так происходит?
void uploadList(node* temp, hwnd* hwnd){
temp->prev = hwnd->tail;
temp->next = NULL;
if (hwnd->tail)
hwnd->tail->next = temp;
else
hwnd->head = temp;
hwnd->tail = temp;
}