传递 'strcmp' 的参数 1 从整数生成指针而不进行强制转换 C
passing argument 1 of 'strcmp' makes pointer from integer without a cast C
我正在尝试将二维数组与 char 进行比较,但它一直向我发送此错误并指向该数组。
if ((strcmp(matrixarray[j+k][i], "X"))==0 || (strcmp(matrixarray[j+k][i], currentword))==0)
最小可重现示例:
char wordsarray[8][7] = {"kalnas", "namas", "vanduo", "dama", "rasa", "ola", "mia", "jis"};
char matrixarray[6][7] = {"XOXXOX", "OOOOOO", "XOXXOX", "XOOOOX", "XOXOXX", "XOOOXX"};
char currentword = wordsarray[0][0];
int maxlen = 7 - sizeof(currentword);
for (int i = 0; i < n; i++){
for(int j = 0; j <= maxlen; j++){
for (int k = 0; k < n; k++){
if ((strcmp(matrixarray[j+k][i], "X"))==0 || (strcmp(matrixarray[j+k][i], currentword))==0)
matrixarray[j+k][i] = currentword;
else
matrixarray[0][0] = 'X';
}
给定定义 char matrixarray[6][7]
,调用 strcmp(matrixarray[j+k][i], "X")
将一个字符传递给 strcmp()
,但它需要一个指针。
使用strcmp(&matrixarray[j+k][i], "X")
是最简单的改变。它将解决编译问题;它在算法上可能正确也可能不正确。
的确,它可能不正确。比较不会成功,除非它正在查看 matrixarray[j+k]
中空字节之前的最后一个字符。您似乎更有可能比较字符,而不是字符串,所以:
matrixarray[j+k][i] == 'X'
它可能更接近正确。
我正在尝试将二维数组与 char 进行比较,但它一直向我发送此错误并指向该数组。
if ((strcmp(matrixarray[j+k][i], "X"))==0 || (strcmp(matrixarray[j+k][i], currentword))==0)
最小可重现示例:
char wordsarray[8][7] = {"kalnas", "namas", "vanduo", "dama", "rasa", "ola", "mia", "jis"};
char matrixarray[6][7] = {"XOXXOX", "OOOOOO", "XOXXOX", "XOOOOX", "XOXOXX", "XOOOXX"};
char currentword = wordsarray[0][0];
int maxlen = 7 - sizeof(currentword);
for (int i = 0; i < n; i++){
for(int j = 0; j <= maxlen; j++){
for (int k = 0; k < n; k++){
if ((strcmp(matrixarray[j+k][i], "X"))==0 || (strcmp(matrixarray[j+k][i], currentword))==0)
matrixarray[j+k][i] = currentword;
else
matrixarray[0][0] = 'X';
}
给定定义 char matrixarray[6][7]
,调用 strcmp(matrixarray[j+k][i], "X")
将一个字符传递给 strcmp()
,但它需要一个指针。
使用strcmp(&matrixarray[j+k][i], "X")
是最简单的改变。它将解决编译问题;它在算法上可能正确也可能不正确。
的确,它可能不正确。比较不会成功,除非它正在查看 matrixarray[j+k]
中空字节之前的最后一个字符。您似乎更有可能比较字符,而不是字符串,所以:
matrixarray[j+k][i] == 'X'
它可能更接近正确。