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.