c - 使用双矩阵变量将 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 和指针的新手
解决方案
改变
board[i][j] = tileInfo.tiles[i][j].identifier;
至
board[i][j] = tileInfo.tiles[i][j].identifier[0];
identifier 是一个大小为 1 的字符数组。并且board[i][j]
是一个 char
或者将类型更改为identifier
,char
因为它的大小是 1
char identifier;
推荐阅读
- java - 如何显示来自需要两个 URL 的 API 的信息?
- mysql - Woocommerce - 自定义 MySQL 查询 - 获取具有多个分类值的产品
- jsp - 春季启动jsp:java.lang.NoClassDefFoundError:org/apache/tomcat/util/security/Escape
- r - 平行坐标图
- jquery - Select2 - 自动选择动态相关下拉框
- sql-server - SQL Server 包含部分
- python - Tensorflow Print 修复形状问题?
- c++ - C ++,程序输出无效输入但继续循环
- c# - 尝试在半随机位置一遍又一遍地生成预制件
- javascript - javascript自动点击链接不起作用