У меня есть структура Player, которая содержит GameBoard, который представляет собой двумерный массив символов.
Когда я использую memset, он не устанавливает массив
Я попытался использовать адрес доски (&, *) и без этих символов
Я могу заставить его работать, если я использую указатель на переменную Player в 'initializeBoard', но назначение говорит не использовать указатель
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
const int ROWS = 10;
const int COLS = 10;
const char *PLAYERONE = "Player 1";
const char *PLAYERTWO = "Player 2";
const char WATER = '~';
const int NUM_SHIPS = 5;
typedef struct gameBoard {
char board[ROWS][COLS];
} GameBoard;
typedef struct human {
char name[20];
GameBoard gameBoard;
} Player;
// function prototypes
void displayGameBoard(Player player);
void initializeBoard(Player player);
void initializePlayer(Player *player, const char *name);
// main function
int main() {
Player playerOne;
Player playerTwo;
// call function welcomeScreen
initializePlayer(&playerOne, PLAYERONE);
// end program
return 0;
}
void displayGameBoard(Player player) {
int row;
int col;
printf("%s's Game Board\n", player.name);
printf("---------------------------------------------\n");
printf("| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |\n");
printf("---------------------------------------------\n");
for (row = 0; row < ROWS; row++) {
printf("| %d |", row);
for (col = 0; col < COLS; col++) {
printf(" %c |", player.gameBoard.board[row][col]);
}
printf("\n");
}
printf("---------------------------------------------");
}
void initializeBoard(Player player) {
memset(*player.gameBoard.board, WATER, sizeof(player.gameBoard.board));
}
void initializePlayer(Player *player, const char *name) {
char playerName[20];
GameBoard playerBoard;
strcpy(player->name, playerName);
player->gameBoard = playerBoard;
initializeBoard(*player);
displayGameBoard(*player);
}
Я ожидаю, что результат будет заполнен символом '~', но он либо повреждает весь терминал, либо печатает пробелы