我试图将一个二维数组发送到一个函数,该函数在主代码中初始化它后打印它。 问题是,由于某种原因,数组中的一些槽被“垃圾”填充,而这些“垃圾”在我将其发送到函数之前并不存在。
int main(){
char board[row][col] = {};
print_board(board,row,col);
printf("empty: %c", board[5][5]);
return 0;
}
void print_board(char board[][MAX_COLS], int rows, int cols) {
//print the board in the following format:
printf("\n");
for (int i = 0; i < rows; i++) {
printf("|");
for (int j = 0; j < cols; j++) {
printf("%c|", board[i][j]);
}
printf("\n");
}
}
遇到的问题可能与您在主函数中使用板的可变长度数组并且未初始化其所有元素有关。当您将数组传递给 print_board 函数时,它可能会打印未初始化的值,这些值显示为垃圾。
要解决此问题,您应该确保在将其传递给 print_board 函数之前在 main 函数中初始化 board 数组的所有元素。你可以参考这个:
#include <stdio.h>
#define MAX_ROWS 6
#define MAX_COLS 6
void print_board(char board[][MAX_COLS], int rows, int cols);
int main() {
char board[MAX_ROWS][MAX_COLS] = {};
// Initialize the board with some values
for (int i = 0; i < MAX_ROWS; i++) {
for (int j = 0; j < MAX_COLS; j++) {
board[i][j] = 'X'; // Set whatever value you want here
}
}
// Print the initialized board
print_board(board, MAX_ROWS, MAX_COLS);
// Access an element to demonstrate it's initialized
printf("empty: %c\n", board[5][5]);
return 0;
}
void print_board(char board[][MAX_COLS], int rows, int cols) {
// Print the board in the following format:
printf("\n");
for (int i = 0; i < rows; i++) {
printf("|");
for (int j = 0; j < cols; j++) {
printf("%c|", board[i][j]);
}
printf("\n");
}
}
这确保了 board 数组中的所有元素在传递给 print_board 函数之前都初始化为特定值。