传递变量来加载位图文件?

时间:2014-06-12 17:00:51

标签: c++ arrays bitmap allegro

我想在位图文件名中传递一个变量,但要加载位图需要一个const char *。是否可以转换我的数组来加载位图文件,还是有任何其他解决方案来解决我的问题?

#include <allegro5/allegro.h>
#include <allegro5/allegro_image.h>
#include <cstdio>
#include <iostream>

int main(){
    char buf[40], char_nr[10], png_file[10];
    int int_number = 1010;

    ALLEGRO_DISPLAY *display = nullptr; al_init();
    ALLEGRO_BITMAP *image = nullptr; al_init_image_addon();

    display = al_create_display(800,400);

    strcpy(buf, "\"./images/");
    snprintf(char_nr, sizeof(char_nr), "%d", int_number);
    strcat(buf, char_nr);
    strcpy(png_file, ".png\"");
    strcat(buf, png_file);

    image = al_load_bitmap(buf);//buf="./images/1010.png"

    std::cout << buf;//for test purposes

    al_clear_to_color(al_map_rgb(0,0,0));
    al_draw_bitmap(image, 10, 10, 0);
    al_flip_display();

    al_rest(3.0);
}

我的程序在运行后崩溃了。 (allegro.exe已停止工作......)

2 个答案:

答案 0 :(得分:2)

引号不属于您的缓冲区。

您的char*数组可以传递给需要const char*的方法。

答案 1 :(得分:0)

是否可以转换我的数组以加载位图文件?

您的char buf[40] 可隐式兑换const char*。您无需为转换编码任何代码。这是自动的。