Несколько лет назад я создал функцию C ++, используя FILE для создания растровых файлов.В последнее время (не уверен, когда и почему) этот код не работает при открытии файла.Проблема с открытым вызовом ...
file_ptr = fopen("ScreenShots/Screenshot1.bmp", "wb");
В настоящее время это приводит к ошибке 13, ошибка разрешения запрещена.Измените расширение имени файла на что-то другое, и fopen работает нормально.Например,
file_ptr = fopen("ScreenShots/Screenshot1.bm2", "wb");
Файл сохраняется правильно, и при изменении расширения обратно на BMP я могу правильно отобразить файл в Paintshop.
Выполнена быстрая проверка с использованием ofstream и та же проблема.
Есть идеи, почему я получаю сообщение об ошибке «Отказано в доступе» при попытке открыть файлы BMP для записи данных?Для информации я использую Visual Studio Community 2017 в Windows 10.
Чтобы получить полный раздел кода ...
BITMAPFILEHEADER bitmap_header;
BITMAPINFOHEADER bitmap_info;
FILE *file_ptr;
unsigned int count;
unsigned char tempRGB;
char filename[256];
bool finished;
// CREATE A UNIQUE FILENAME
count = 1;
finished = false;
do
{
// CREATE NAME
sprintf(filename, "ScreenShots/Screenshot%d.bmp", count);
// CHECK IF FILE EXISTS
errno = 0;
file_ptr = fopen(filename, "rb");
if (file_ptr)
{
// FILE EXISTS
fclose(file_ptr);
count = count + 1;
}
else
{
// UNIQUE FILENAME
file_ptr = fopen(filename, "wb");
if (file_ptr == NULL)
{
// UNABLE TO OPEN FOR WRITING - GIVE UP
// (USING OWN LOGGING CLASS)
jalog.log("\nERROR on Screenshot >");
jalog.log(filename);
jalog.log("< >");
jalog.log((short)errno);
return;
}
finished = true;
}
}
while (finished == false);