首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >fopen / ofstream::open在创建BMP文件时失败

fopen / ofstream::open在创建BMP文件时失败
EN

Stack Overflow用户
提问于 2018-12-17 00:57:14
回答 1查看 283关注 0票数 0

几年前,我创建了一个C++函数,使用FILE创建位图文件。最近(不确定何时或为什么),此代码现在在打开文件时失败。问题出在开放调用上。

代码语言:javascript
复制
file_ptr = fopen("ScreenShots/Screenshot1.bmp", "wb");

目前,这会导致错误13,权限被拒绝错误。将文件扩展名更改为其他名称,fopen就可以正常工作。例如,

代码语言:javascript
复制
file_ptr = fopen("ScreenShots/Screenshot1.bm2", "wb");

文件将正确保存,当将扩展名改回BMP时,我可以在Paintshop中正确显示该文件。

使用ofstream和同样的问题进行了快速检查。

你知道为什么在尝试打开BMP文件写入数据时会出现权限被拒绝的错误吗?有关信息,我在Windows 10上使用Visual Studio Community 2017。

为了给出完整的代码段...

代码语言:javascript
复制
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);
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53804461

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档