Я пытаюсь создать динамическую c доску, которая перемещается каждый раз, когда пользователь вводит строку «A1» определенным c способом, вот мой код:
struct game{
int *linha;
int *coluna;
};
typedef struct game game;
void clean_buffer();
int main(void) {
game *game;
int selector = 1,row,col,i,j;
game->linha = (int*) malloc(sizeof(int));
game->coluna = (int*) malloc(sizeof(int));
*game->linha = 3;
*game->coluna = 3;
char tabuleiro[*game->linha][*game->coluna][3];
for( i = 0; i< *game->linha ; i++){
for( j = 0; j < *game->coluna ; j++){
strcpy(tabuleiro[i][j]," ");
}
}
while(selector){
printf("\nType the position you wanna play:");
scanf("%d",&row);
scanf("%d",&col);
strcpy(tabuleiro[row][col],"A1");
if(col == *game->coluna - 2){
(*game->coluna)++;
game->coluna = (int*) realloc(game->coluna,sizeof(int)*(*game->coluna));
for(i=0;i<*game->linha; i++){
strcpy(tabuleiro[i][*game->coluna-1]," ");
}
}
for(i=0;i<*game->linha;i++){
for(j=0;j<*game->coluna;j++){
printf("%s|",tabuleiro[i][j]);
}
printf("\n");
}
printf("\nDo you wanna stop? (0 for yes)");
clean_buffer();
scanf("%d",&selector);
}
}
void clean_buffer(){
int c;
do{
c = getchar();
}while(c != EOF && c != '\n');
}
Человеку нужно для выбора позиции, и в выбранной доске появляется строка «А1». Но после нескольких вариантов strcpy начинает копировать "A1" в места, где он не должен был. Например, если пользователь вводит позицию 0 0, позицию 0 1, позицию 0 2 и позицию 0 3, после позиции 0 3 он печатает строку «A1» в позиции 1 0, и если пользователь вводит позицию 0 4 , он будет печатать в позиции 0 4 и в позиции 1 1. Такое поведение продолжается до остановки программы. Кто-нибудь может мне помочь? Я понятия не имею, что происходит не так. «linha» означает «ряд», «coluna» означает «col», а «tabuleiro» означает «доска»
Пример этого можно увидеть в: https://prnt.sc/teaay9 (I ' м ниже 10 репутации, потому что я здесь новенький, поэтому я не могу размещать изображения)