Ir ao conteúdo
  • Cadastre-se

Inicializar Struct que contém um vetor para Strutc


wilker.rj

Posts recomendados

Boa tarde galera, estou com um problema na inicialização de uma struct que contém um vetor para struct. 

Minha strutct é a seguinte:

typedef struct freecell {    TPilha **cartas; // Pilhas de A a H    TPilha **naipe; // Pilhas de 0 a 3    TPilha **reserva; // Pilhas de W a Z} Freecell;

fiz a seguinte função para inicializá-la

 

void inicializaFreecell(Freecell *freecell) {    int i;    //Aloca espaço TAM_PILAS_NAIPE ponteiros de pilhas de cartas    freecell->cartas = (freecell->cartas)malloc(TAM_PILHAS_CARTAS * sizeof (freecell->cartas*));    if (freecell->cartas != NULL)        for (i = 0; i < TAM_PILHAS_CARTAS; i++)            freecell->cartas[i] = NULL;    else {        printf("Erro na alocação do vetor freecell->cartas");        exit(10);    }    //Aloca espaço TAM_PILAS_NAIPE ponteiros de pilhas de naipe    freecell->naipe = (freecell->naipe) malloc(TAM_PILHAS_NAIPE * sizeof (freecell->naipe*));    if (freecell->naipe != NULL)        for (i = 0; i < TAM_PILHAS_NAIPE; i++)            freecell->naipe[i] = NULL;    else {        printf("Erro na alocação do vetor freecell->naipe");        exit(11);    }     //Aloca espaço TAM_PILAS_NAIPE ponteiros de pilhas de reserva    freecell->reserva = (freecell->reserva) malloc(TAM_PILHAS_RESERVA * sizeof (freecell->reserva*));    if (freecell->reserva != NULL)        for (i = 0; i < TAM_PILHAS_NAIPE; i++)            freecell->reserva[i] = NULL;    else {        printf("Erro na alocação do vetor freecell->reserva");        exit(12);    }}

Porém na hora de compilar obtenho o seguinte erro.
 

Freecell.c:152:42: error: expected ';' before 'malloc'

 

 

 

Link para o comentário
Compartilhar em outros sites

Obrigado por responder.

O correto seria

 freecell->naipe = (TPilha**) malloc(TAM_PILHAS_NAIPE * sizeof (TPilha*));

Meu prof me alertou agora a pouco que 
 

freecell->cartas é do tipo TPilha**, ou seja, um ponteiro para TPilha*. Logo você deve alocar TAM_PILHAS_CARTAS do tipo TPilha* e armazenar em um TPilha**. O mesmo serve para os outros dois.

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...