Ir para conteúdo
Fórum Script Brasil
  • 0

Dúvida Struct Ponteiro -C


JohnRodrifgues

Pergunta

Olá galera, sou iniciante em C, e estou criando um projeto para a faculdade para criar um sistema em C que possa registrar equipes e fazer um ranking de acordo com os resultados de acordo com um campeonato que iremos participar.

Não consigo ver erros nesse código, e porém ao imprimir o ponteiro me retorna uns valores bizarros e não realmente o que está realmente alocado dentro do malloc em nomeEquipe.

o que estou fazendo de errado?

	#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 10
	struct lancamento{
        char nomeEquipe[50];
        int  numeroTentativas;
        int  distanciaAlvo;
        int  situacao;
        };
	struct sucesso{
        char nomeEquipe[50];
        int distanciaAlvo;
        int numeroTentativas;
};
	void cadastraEquipe(struct lancamento *equipes){
        printf("INFORME O NOME DA EQUIPE: ");
        fflush(stdin);
        gets(equipes->nomeEquipe);
        equipes->numeroTentativas = 0;
        equipes->distanciaAlvo = 0;
        equipes->situacao = 0;
    }
	void menu(){
	    int escolha, i, numEquipes;
    char ver_opt;
    struct lancamento *equipes;
	    equipes = (struct lancamento*) malloc(sizeof(struct lancamento)* MAX);
	    system("color F0");
    printf("******************** MENU - SPACE CUP  ********************\n");
    printf("                                                          *\n");
    printf("         [1] - CADASTRAR EQUIPES(MAX 10)                  *\n");
    printf("         [2] - SIMULAR LANCAMENTO                         *\n");
    printf("         [5] - SAIR                                       *\n");
    printf("                                                          *\n");
    printf("*****************************************  Dev by Nemesis *\n");
	    printf("DIGITE A OPCAO: ");
    scanf("%d", &escolha);
	    switch (escolha)
    {
        case 1:
            system("cls");
            for(i= 0; i<MAX;)
            {
                printf("REGISTRO DA EQUIPE:\n");
	                cadastraEquipe(&equipes);
                printf("DESEJA CADASTRAR OUTRA EQUIPE?: S/N?");
                scanf("%c", &ver_opt);
                if((ver_opt =='N') || (ver_opt=='n'))
                {
                    system("cls");
                    escolha = NULL;
                    menu();
                }else{
                    i++;
                     }
            }
        break;
	        case 5:
            printf("OBRIGADO POR UTILIZAR NOSSO SISTEMA\n");
            exit(1);
        break;
	        case 2:
            for(i = 0 ; i<MAX; i++)
            {
            printf("Nome da Equipe :%s\n", (*equipes).nomeEquipe);
	            }
        break;
	        default:
            printf("OPCAO INVALIDO\n");
            system("pause");
            system("cls");
            return menu();
        break;
    }
}
	int main(){
	        menu();
	    }
	

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0
cadastraEquipe(&equipes);

Aqui estás a passar "equipes" por ponteiro de ponteiro. Ou seja     p -> p -> struct.

Quando vais registar uma equipa, isso irá mudar o ponteiro que está a apontar para a struct e não a propria struct.

 

Isso irá fazer com que não te apareça valores "estranhos", mas há mais um problema que tens de resolver. Tu só irás conseguir registar e analisar o primeiro elemento da lista das 10 equipas. Precisas de ter uma variavel a dizer quantas já foram criadas (Total_Equipas) que vai aumentando a cada registo, e depois acessas o teu ponteiro da struct (equipes) assim:

int Total_equipas = 0;

registo(struct lancamento *equipes)
{
  equipes[Total_equipas]->...
  
  Total_equipas += 1;
}

//e para analizar usas um for loop
for(int i = 0; i < MAX; i++)
{
  equipes[i]->...
}

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...