Подскажите как перезаписать бинарный файл полностью удалив его содержимое не удаляя сам файл?

 

Подскажите как перезаписать бинарный файл полностью удалив его содержимое не удаляя сам файл?

Вот знаю что в других языках есть режимы открытия файла, и есть режим до записи есть режим перезаписи.

Я кароче столкнулся с такой проблемой, у меня есть код который хранит в файле текущие открытые ордера терминала


   void WriteData(Order &arr[]){
      PrintFormat("Saving data to a file...");
      ResetLastError();
      int handle=FileOpen(save,FILE_READ|FILE_WRITE|FILE_BIN|FILE_COMMON);
      if(handle!=INVALID_HANDLE)
      {
         FileSeek(handle,0,SEEK_SET);
         FileWriteArray(handle,arr,0,WHOLE_ARRAY);
         PrintFormat("File saved successfully!");
         PrintFormat("Stored items in an array: %d",ArraySize(arr));
         FileClose(handle);
      }
   else
      Print("Failed to open the file, error ",GetLastError());
   }


Все хорошо я открываю два ордера в терминале и они исправно сохраняются в файл



Но беда в том что когда я закрываю один ордер у меня в массиве остается только 1 структура с активным ордером (это я уже проверил) но в файле все равно остается запись о старом ордере.

Я подозреваю что при записи байт размером меньше чем в файле он просто записывает их с первого байта и все, а старые данные не удаляет.

Как такое можно победить? что бы файл затирался и записывался по новой, при условии что я не могу удалять файл с диска?

 
Все я кароче тупой - там надо было просто убрать флаг
FILE_READ