Вот фрагмент кода
typedef struct
{
double testA;
double testB[500];
bool isProcessed;
} MYSTURCT;
У меня есть двоичный файл, который написан с несколькими структурами типа "myStruct".
Теперь в другой функции я пытаюсь прочитать файл и обновить в середине.
void test()
{
FILE* fp = fopen (testFile, "r+")
MYSTURCT* myPtr = malloc (sizeof (MYSTRUCT));
while ( fread (myPtr,sizeof(MYSTRUCT),1,fp) )
{
if (!myPtr->isProcessed)
{
//update some thing int he struct
myPtr->testA = 100.00;
fseek (fp, -sizeof(MYSTRUCT), SEEK_CUR);
fwrite (myPtr,sizeof(MYSTRUCT), 1,fp);
}
}
}
Как только я нахожу что-то необработанное, я обновляю структуру в памяти, затем пытаюсь
записать структуру на диск. (сначала ищем позицию CURR - sizeof (struct))
а затем записать структуру на диск.
То, что происходит в моем приложении, происходит после выполнения fseek, мой
fp -> _ ptr портится и теряет позицию в моем потоке.
Что-то не так, что я здесь делаю?