C 调用函数时,为什么会出现这些错误?

C 调用函数时,为什么会出现这些错误?,c,C,我收到这些警告,我认为这些警告阻止了任何东西的打印: 当我调用函数时,“传递'printboard'的参数1使整数指针不带强制转换”,以及第2行的“预期字符(*)[26]但参数类型为'char'” #include <stdio.h> void printBoard(char board[26][26], int n){ int i,j,k; if (i=0){ for (j=1;j<n;j++){ for (k=1;k<n;k++){

我收到这些警告,我认为这些警告阻止了任何东西的打印: 当我调用函数时,“传递'printboard'的参数1使整数指针不带强制转换”,以及第2行的“预期字符(*)[26]但参数类型为'char'”

#include <stdio.h>
void printBoard(char board[26][26], int n){
int i,j,k;

if (i=0){
        for (j=1;j<n;j++){
        for (k=1;k<n;k++){
            board[i][j]=k;
        }
        printf("%c", k+96);
    }
}

if (j=0){
for(i=1;i<n;i++){
    for(k=1;k<n;j++){
        board[i][j]=k;
        printf("%c", k+96);
    }
}    
}

for (i=1;i<=n;i++){
    for (j=1;j<=n;j++){
        if (board[i][j]!=board[n/2][n/2]&&board[i][j]!=board[(n/2)+1][(n/2)+1]&&board[i][j]!=board[n/2][(n/2)+1]&&board[i][j]!=board[(n/2)+1][n/2]){
            board[i][j]='U';
        }
        else if (board[i][j]==board[n/2][n/2]&&board[i][j]==board[(n/2)+1][(n/2)+1]){
            board[i][j]='W';
        }
        else {
            board[i][j]='B';
        }
    }
    printf("%c", board[i][j]);
}
//n is even
return;
}


int main(void)
{
const char board[26][26];
int dim;
char boardConfig;
printf("Enter the board dimension: \n");
scanf("%d", &dim);   

printBoard(board[26][26],dim);
#包括
无效印刷板(字符板[26][26],内部编号){
int i,j,k;
如果(i=0){

for(j=1;j
board[26][26]
是一个
char
元素(超出范围)。要传递整个二维阵列板:

printBoard(board,dim);
(另外:检查
scanf
的返回代码,并检查
dim
是否在1-26范围内,以避免未定义的行为)


初始化
board[i][j]=k;
时添加一些ASCII偏移量(例如:
board[i][j]=k+'a';
)。否则,您的代码将在末尾打印非ASCII字符。

您需要将其键入参数类型。代码中有许多错误,例如赋值运算符而不是比较运算符。
如果(i=0)
应该是
如果(i==0)
,等等。我已经编译好了代码并开始工作,还不确定您要做什么,但这应该可以:

#include <stdio.h>
void printBoard(char board[26][26], int n){
int i = 0;
int j = 0;
int k = 0;

if (i==0){
        for (j=1;j<n;j++){
        for (k=0;k<n;k++){
            board[i][j]=k;
        }
        printf("%c", k+96);
    }
}

if (j==0){
for(i=1;i<n;i++){
    for(k=0;k<n;k++){
        board[i][j]=k;
        printf("%c", k+96);
    }
}    
}

for (i=1;i<=n;i++){
    for (j=1;j<=n;j++){
        if (board[i][j]!=board[n/2][n/2]&&board[i][j]!=board[(n/2)+1][(n/2)+1]&&board[i][j]!=board[n/2][(n/2)+1]&&board[i][j]!=board[(n/2)+1][n/2]){
            board[i][j]='U';
        }
        else if (board[i][j]==board[n/2][n/2]&&board[i][j]==board[(n/2)+1][(n/2)+1]){
            board[i][j]='W';
        }
        else {
            board[i][j]='B';
        }
    }
    printf("%c", board[i][j]);
}
//n is even
return;
}


int main(void)
{
const char board[26][26];
int dim;
char boardConfig;
printf("Enter the board dimension: \n");
scanf("%d", &dim);   

printBoard((char (*)[26])board,dim);
}
#包括
无效印刷板(字符板[26][26],内部编号){
int i=0;
int j=0;
int k=0;
如果(i==0){

用于(j=1;jjust
印刷板(板,尺寸)
您通常应该相信编译器告诉您的内容…试图将char值视为指针肯定会破坏您的打印代码。这将有助于了解您试图实现的目标,以及填充电路板时希望执行的操作。在一些地方,您编写了类似于
if(i=0){…}的代码
但这是错误的(一个等于一个等于一个等于两个等于)。如果你想在这之前将
i
初始化为零,那么就显式地执行。我正在尝试打印一个反向游戏板,其中B和W是棋子的颜色,U代表一个未占用的空间。如果你更改
打印板(board[26][26],则不需要施法
印制板(棋盘
。我正在打印一个reversi游戏盘,其中W和B代表棋子的颜色,U代表未被占用的空间。@S.S.Anne是的,如果你按照你说的做,你仍然需要演员阵容。我做的第一件事是——我认为它是什么。你实际上需要按照我的方式进行演员阵容,以便它能够编译。请告诉我请进行一次向上投票,并在以后的向下投票时再次检查您是否正确。对不起,您是对的。在向下投票之前,我确实需要再次检查我是否正确。也许您应该删除
const char board[26][26]上的
const
因此您不需要强制转换。看起来另一个函数中正在修改
,因此这可能是未定义的行为。谢谢!是的,这是常量。