首页 > 解决方案 > 使用双矩阵变量将 char 转换为 char[1]

问题描述

嗨,我正在使用一个变量:

char board[9][9] = {
    {' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '}, /* Game board */
    {' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '},
    {' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '},
    {' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '},
    {' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '},
    {' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '},
    {' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '},
    {' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '},
    {' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '}
};

我想要做的是使用我的结构,如下所示:

typedef struct {
    int adjacent_mines;
    bool revealed;
    bool is_mine;
    char identifier[1];
} Tile;

struct GameState {
    Tile tiles[NUM_TILES_X][NUM_TILES_Y];
};
typedef struct GameState GameState;

这样我就可以使用以下函数将字符附加到我的board[][]:

for (int i = 0; i < NUM_TILES_X; i++) {
    for (int j = 0; j < NUM_TILES_Y; j++) {
        board[i][j] = tileInfo.tiles[i][j].identifier;
    }
}

使用此tileInfo.tiles[i][j].identifier设置的位置:

strcpy(tileInfo->tiles[x][y].identifier, "*");

我在控制台上得到的输出是我该incompatible pointer to integer conversion assigning to 'char' from 'char [1]'如何解决这个问题,有人可以解释发生了什么吗?对不起,如果它很愚蠢,我是 C 和指针的新手

标签: cpointersstructchar

解决方案


改变

board[i][j] = tileInfo.tiles[i][j].identifier;

board[i][j] = tileInfo.tiles[i][j].identifier[0];

identifier 是一个大小为 1 的字符数组。并且board[i][j]是一个 char

或者将类型更改为identifierchar因为它的大小是 1

char identifier;

推荐阅读