我正在try 编写一个PNG文件.我总是收到写入错误(CAIRO_STATUS_WRITE_ERROR).

    cairo_surface_t *image_surface = cairo_surface_create_similar_image(pBitmap -> mainSurface,
                     CAIRO_FORMAT_RGB24, pBitmap -> geom.width, pBitmap -> geom.height);
    cairo_t *cr = cairo_create(image_surface);
    cairo_set_source_surface(cr, pBitmap -> mainSurface, 0, 0);
    cairo_paint(cr);
    cairo_status_t cairo_errCode;

    if(pFile)
    {
        char template[] = "./fileXXXXXX.png";
        char *tempFileName = mkdtemp(template);
        if(tempFileName)
        {
            if((cairo_errCode = cairo_surface_write_to_png(image_surface, tempFileName)) == CAIRO_STATUS_SUCCESS)
            {

据我所知,它清楚地表明文件错误.我试了很多地方,看看这是否是一个权限问题.

推荐答案

mkdtemp返回一个新的临时目录.

你需要mkstemp(一个新的临时文件).

C++相关问答推荐

带双指针的2D数组

从STdin读写超过4096个字节

从C函数调用asm函数时生成错误的BLX指令(STM32H753上的gcc)

球体—立方体重叠:无、部分或全部?

加密解密工作正常,但返回错误0x80090005

Kdb:仅升级指定的列

用gcc-msse 2编译的C程序包含AVX 1指令

这个C程序在工作中途停止获取输入.我收到分段故障(核心转储).我还是不知道问题出在哪里

在C语言中,指针指向一个数组

在进程之间重定向输出和输入流的问题

';\n&39;和';\r&39;中的';\n&39;之间有什么关系?

如何确保我将使用C标准库函数的函数版本,如&getc";,而不是类似函数的宏版本?

Fprintf正在写入多个 struct 成员,并且数据过剩

当我用scanf(&Q;%S%S%S&Q;,单词0,单词1,单词2)输入多个单词时,除了最后一个单词外,每个单词的第一个字符都丢失了

If语句默认为true

GCC认为这是一个VLA是对的吗?

在C中定义函数指针?

`void foo(int a[static 0]);` 有效吗?

运行以下 C 程序时出现分段错误

将字节/字符序列写入标准输出的最简单形式