Ошибка при использовании _chsize()
У меня есть бинарный файл "binBin", в котором хранятся парметры объектов (строка в 32 символа и 2 инта). При попытке реализовать метод удаления объекта(если он есть в файле и находится в конце), а именно при обрезке файла с помощью _chsize(), программа крашится, с бинарным файлом ничего не происходит, вылетает окно с minkernel/crts/ucrt/src/appcrt/lowio/chsize
fstream fin(fName, ios::binary | ios::in | ios::out);
if (!fin) {
FileIsNotOpened fino;
throw(fino);
}
FILE* FBIN = fopen("binBin", "r+b");
while (curPos != fSize) {
fin.seekg(curPos, ios::beg);
fin.read(reinterpret_cast<char*> (&cname), sizeof(cname));
fin.read(reinterpret_cast<char*> (&_age), sizeof(_age));
fin.read(reinterpret_cast<char*> (&_exp), sizeof(_exp));
if ((cname == name) && (_age == age) && (_exp == exp)) {
if (curPos == fSize - 40) {
fin.seekg(0, ios::beg);
fSize -= 40;
fin.close();
if (_chsize(_fileno(FBIN), fSize)) {}
break;
}
fSize -= 40;
if (_chsize(_fileno(FBIN), fSize)) {}
}
fclose(FBIN);
curPos += sizeof(cname) + sizeof(_age) + sizeof(_exp);
На стеке наткнулся на похожую проблему, но то реение мне не помогло - у меня есть все библиотеки. Более того, chsize() работает, если запись находится в начале файла.