FIFO with STRUCT does not work

0

Good evening, ten days ago I posted this question: How to create FILA passing a STRUCT with community support I've created this code:

#define TAM 5

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <locale.h>


    typedef struct
    {

        int final;
        int inicio;
        int tamanho;   
        int contador;

        char *vetorFila[TAM];

    }  pretendentes;


    void ListarNomesDosPretendentes();
    void removerNomesDosPretendentes();
    void receberNomesDosPretendentes();
    void armazenarNomesDosPretendentes();


    int main(void)
    {
        setlocale(LC_ALL, "");        


        int menu = 0;
        int operacao = 0;


            do
            {
                printf("1 - Inserir nome\n");
                printf("2 - Remover nome\n");
                printf("3 - Exibir fila\n");
                scanf("%i", &menu);

            } while(menu < 0 && menu > 3);


            switch (operacao)
            {
                case 1:
                {
                    receberNomesDosPretendentes();
                }
                case 2:
                {
                    removerNomesDosPretendentes();
                }
                case 3:
                {
                    ListarNomesDosPretendentes();
                }
            }

        return 0;
    }



    void receberNomesDosPretendentes()
    {
        static char nomes[10], *ptr;

        printf("Digite o nome ou aperte ENTER para sair.");
        do
        {
            printf("\n\nDigite o nome do pretendente: ");
            gets(nomes);

            ptr = (char*) malloc(strlen(nomes));
            strcpy(ptr, nomes);

            armazenarNomesDosPretendentes(ptr);

        } while(*nomes);
    }



    void armazenarNomesDosPretendentes(pretendentes *Pretendente, char *ptr)
    {
        if(Pretendente -> inicio == TAM)
        {
            printf("A fila está cheia.");
            return 0;
        }

        Pretendente -> vetorFila[Pretendente->inicio] = ptr;
        Pretendente -> inicio++;

    }

    void removerNomesDosPretendentes(pretendentes *Pretendente)
    {
        if(Pretendente -> inicio == Pretendente -> final)
        {
            printf("A fila está vazia.");
            return 0;
        }

        Pretendente -> final--;

    }

    void ListarNomesDosPretendentes(pretendentes *Pretendente)
    {
        int i;

        for(i = Pretendente -> final; i < TAM; i++)
        {
            printf("Pretendente %d: %s", i+1, Pretendente -> vetorFila[i]);
        }
    }

It just does not work, it compiles, I enter with 2 values and the program breaks. It is a prototype, the purpose is to store the names in a row and display the queue, then I will create the delete function however, apparently has an unidentified error while storing the values.

    
asked by anonymous 28.04.2018 / 23:59

0 answers