Я пытаюсь сохранить структуру (в списке)
typedef struct tupleStruct{
int element[eMax];
char * id;
int eCount;
}tuple_t;
typedef struct {
tuple_t * array;
int used;
int size;
} DynamicArray;
В рамках задания мне было поручено сохранить кортежи, которые хранятся в динамическом массиве, в файле.К сожалению, поскольку строки не существуют в c (по крайней мере, не так, как в других языках).Всякий раз, когда я пытаюсь сохранить элемент динамического массива в файле, строка не сохраняется и не загружается должным образом, поскольку она рассматривается как указатель.Я даже попытался инициализировать его так в структуре:
char id[256];
Есть ли способ сохранить структуру и строку в одном файле?(Учитывая, что мне нужно хранить несколько из них)
Редактировать: сохранение и загрузка кода
Загрузка
DynamicArray loadAllTuples(){
FILE *filePointer;
DynamicArray tempArray;
if((filePointer=fopen("SavedTuples.bin","rb"))==NULL)
{
fputs("Something went wrong while loading!\nA blank Array will be loaded instead\n", stderr);
setbuf(stdout, 0);
//In case of error, blank array is initalised and loaded
fclose(filePointer);
intialiseDynamicArray(&tempArray);
return tempArray;
}
fread(&tempArray, sizeof(DynamicArray),1,filePointer);
//Freeing filePointer memory
free(filePointer);
return tempArray;
}
сохранение
void saveAllTuples(DynamicArray ToSave){
trimArray(&ToSave,0); //Removing extra space from array
FILE * filePointer;
if((filePointer=fopen("SavedTuples.bin","wb"))==NULL)
{
fputs("Something went wrong while saving!\n", stderr);
setbuf(stdout, 0);
return;
}
fwrite(&ToSave, sizeof(ToSave), 1,filePointer);
fclose(filePointer);
}
вызывается
saveAllTuples(dynaArray);
и
dynaArray=loadAllTuples();