Olá meus caros!
Estou desenvolvendo um jogo de cartas em linguagem C para implementar uma IA.
Define-se um tipo de dado como segue abaixo:
struct Estado { /* Salva o estado anterior do jogo */ char stateGame[9]; /* Salva o pr�ximo estado do jogo ap�s executar uma a��o*/ char stateNext[9]; }; typedef struct Estado estado;
Após isso, seto um valor default para os elementos da struct do tipo Estado, invoco:
void start_StateGame(estado *s)
{
for (int i = 0; i < 9; i++)
{
s->stateGame[i] = '0';
s->stateNext[i] = '0';
}
}
Pois bem, quando vou imprimir na tela os elementos: stateGame e stateNext, ocorre o seguinte problema:
Quando imprimo o elemento stateGame, ocorre a impressão tanto do espaço de memória da variável mais o valor alocado para stateNext, dá um total de 18 caracteres. Quando imprimo stateNext, não ocorre isso, já que é a última variável da struct, entao apenas os 9 caracteres são exibidos na tela. Percebo que o ponteiro que aponta para o tipo estado é o mesmo ponteiro que aponta pro elemento stateGame da struct do tipo estado, por isso a impressão está considerando os caracteres dos dois elementos: stateGame e stateNext - tipo char.
Considerando os tipos abaixo:
j1 - tipo player
estadoplayer: *tipo Estado**
Imprimo usando essas funções básicas do C:
A impressão indesejada dos 19 caracteres de stateGame ocorrem deste modo:
printf("%s - estado j1 \n", &j1.estadoPlayer.stateGame);
puts(j1.estadoPlayer.stateGame);
A impressão correta dos 9 caracteres salvos em **stateNext**, funcionam do mesmo modo:
printf("%s - estado j1 \n", &j1.estadoPlayer.stateNext);
puts(j1.estadoPlayer.stateNext);
Como faço para contornar este problema da impressão do elemento stateGame da struct Estado?
Grato.