使用双矩阵变量将 char 转换为 char[1]

标签 c pointers struct char

您好,我正在使用一个变量:

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, "*");

我在控制台上得到的输出是不兼容的指向整数转换的指针从'char [1]'分配给'char'我该如何解决这个问题,有人可以解释一下发生了什么吗?对不起,如果它很笨,我是 C 和指针的新手

最佳答案

改变

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

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

标识符是一个大小为 1 的字符数组。board[i][j] 是一个字符

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

char identifier;

关于使用双矩阵变量将 char 转换为 char[1],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52494256/

相关文章:

c - 访问/释放动态分配的结构数组时出现不需要的行为

在 C 编程中计算使用 TCP/IP 套接字连接到服务器的客户端数量

c - HDF-EOS5 中的 MSVS 2010 C 代码错误

c - 纯 C 中的异常处理

C++ 通过指针实例化

C++ 是否可以有一个通用的函数指针?

c - 基本结构问题C

c++ - 遍历 vector 并将元素复制到 C 数组中

c - 如何将空指针(结构返回类型)更改为声明的结构?

objective-c - Objective-C 类或结构?