嗨,我正在使用变量:
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和指针的新手
答案 0 :(得分:2)
更改
board[i][j] = tileInfo.tiles[i][j].identifier;
到
board[i][j] = tileInfo.tiles[i][j].identifier[0];
identifier是大小为1的字符数组。board[i][j]
是一个字符
或者将大小为1的identifier
的类型更改为char
char identifier;
答案 1 :(得分:2)
两个相关问题:
strcpy(tileInfo->tiles[x][y].identifier, "*");
放入char identifier[1];
中,因为您没有为空终止符分配空间。如果您想将其用作字符串而不是单个字符,则必须执行char identifier[2];
。board[i][j] = tileInfo.tiles[i][j].identifier;
不起作用,因为board[i][j]
是单个字符,而identifier
是数组。您需要确定identifier
应该是什么-一个字符还是一个字符串?现在两者都不是。最简单的方法是,使它char identifier;
不用数组符号,然后用简单的赋值strcpy
替换=
。