我正在尝试创建一个字符数组但我不能正确地执行此操作我不断收到警告消息:
警告:赋值在没有强制转换的情况下从指针生成整数
我想创建一个8列乘4行的数组但是当我单步执行数组时,编译器只给我一个包含8个字符串的数组,这是我的代码:
// Array of 8 columns by 4 rows
char GameBoardDisplay[8][4];
// 4x4 matrix that is zero filled for the moment
int GameBoardTrack [4][4];
//Steps through the matrix one by one and places characters in array
for ( rowtrack = 0, rowtrack2 = 0 ; rowtrack != 4 ; rowtrack++, rowtrack2++){
for (coltrack = 0, coltrack2= 0 ; coltrack !=4 ; ++coltrack){
if(!GameBoardTrack[rowtrack][coltrack]){
GameBoardDisplay[rowtrack2][coltrack2] = '_';
++coltrack2;
if (coltrack == 3){
GameBoardDisplay[rowtrack2][coltrack2] = '\n';
}
else
{
GameBoardDisplay[rowtrack2][coltrack2] = ' ';
++coltrack2
}
}
}
我是否认为char GameBoardDisplay [8] [4]错误的方式?我认为它有32个点可以放置一个我可以返回并重写的字符,但由于某种原因它只能生成8个字符串的数组。
答案 0 :(得分:4)
"_"
是一个字符串,由字符'_'
和'\0'
组成。你想要一个角色:
GameBoardDisplay[rowtrack2][coltrack2] = '_';
同样适用于:
GameBoardDisplay[rowtrack2][coltrack2] = '\n';
和
GameBoardDisplay[rowtrack2][coltrack2] = ' ';
以下是字符常量和字符串litteral 的语法。
C11(n1570),§6.4.4.4字符常量
character-constant: ' c-char-sequence '
C11(n1570),§6.4.5字符串文字
string-literal: encoding-prefixopt " s-char-sequenceopt "
答案 1 :(得分:1)
"_"
,"\n"
以及用双引号括起来的所有内容都是C字符串文字,它的类型为const char[]
。要输入单个字符,请使用单引号/撇号,如下所示:
GameBoardDisplay[rowtrack2][coltrack2] = '_';
答案 2 :(得分:0)
除了这里的所有答案,“a”是一个字符串而'a'是一个字符和所有(你也应该改变),另一个问题(这可能是因为“警告:赋值使得整数来自没有强制转换的指针“)在您将变量GameBoardDisplay重新声明为2D整数数组后,将其声明为2D字符数组。
你可以试试,
char GameBoardDisplay[8][4];
// 4x4 matrix that is zero filled for the moment
//int GameBoardDisplay [4][4];
//Steps through the matrix one by one and places characters in array
for ( rowtrack = 0, rowtrack2 = 0 ; rowtrack != 4 ; rowtrack++, rowtrack2++){
for (coltrack = 0, coltrack2= 0 ; coltrack !=4 ; ++coltrack){
if(!GameBoardTrack[rowtrack][coltrack]){
GameBoardDisplay[rowtrack2][coltrack2] = '_';
++coltrack2;
if (coltrack == 3){
GameBoardDisplay[rowtrack2][coltrack2] = '\n';
}
else
{
GameBoardDisplay[rowtrack2][coltrack2] = ' ';
++coltrack2
}
}
}