无法使用typedef结构解析字段“tile”

时间:2013-10-28 23:26:27

标签: c++ c sdl game-engine

嘿伙计们这不应该那么难,但为什么呢

            fscanf(fp, "%d", Map.tile[x][y]);

瓷砖部分表示无法解析Field'瓷砖' 抱歉有初学者问题,但我猜它应该是char到int转换的问题。 我该如何解决这个问题? 谢谢, waco001

void MapManager::loadMap(char *name){
    int x, y;
    FILE *fp;

    fp = fopen(name, "rb");
    const int MAX_MAP_Y = 32;
    const int MAX_MAP_X = 32;
    typedef struct Map
    {
        int tile[MAX_MAP_Y][MAX_MAP_X];
        char xs;
    } Map;
    /* If we can't open the map then exit */

    if (fp == NULL)
    {
        printf("Failed to open map %s\n", name);

        exit(1);
    }

    /* Read the data from the file into the map */

    for (y=0;y<MAX_MAP_Y;y++)
    {
        for (x=0;x<MAX_MAP_X;x++)
        {
            fscanf(fp, "%d", Map.tile[x][y]);
        }
    }

    /* Close the file afterwards */

    fclose(fp);
}

1 个答案:

答案 0 :(得分:2)

Map是一种类型,但您需要一个对象。你可以,例如,使用

Map map;
// ...
if (fscanf(fp, "%d", map.tile[x][y]) != 1) {
    fprintf(stderr, "ERROR: failed to read map.tile[%d][%d]\n", x, y);
}