传递 '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'

它可能更接近正确。