Bom dia!
Não estou conseguindo esvaziar a fila na "void esvaziar_fila()".
Quando utilizo a opção de esvaziar a fila parece que esvazia mas os dados seguem impressos e não somem.
Travei legal...
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <string.h>
//Constante que define o tamanho máximo da estrutura de dados
#define tamanho 5
//Declaração do tipo_fila: estrutura de dados
struct tinformacoes{
char ra_aluno[10];
char arq[10];
char ext_arq[10];
char matri_prof[10];
};
struct tfila{
struct tinformacoes dados[tamanho];
int ini;
int fim;
};
//Variaveis globais
struct tfila fila;
struct tinformacoes informações;
int op;
//Prototipação
void fila_entrar();
void fila_sair();
void fila_mostrar();
void menu_mostrar();
void esvaziar_fila();
int main (){
setlocale(LC_ALL, "portuguese");
op = 1;
fila.ini = 0;
fila.fim = 0;
while (op != 0) {
system("cls");
fila_mostrar();
menu_mostrar();
scanf("%d", &op);
switch (op) {
case 1:
fila_entrar();
fflush(stdin);
break;
case 2:
fila_sair();
fflush(stdin);
break;
case 3:
esvaziar_fila();
fflush(stdin);
break;
default:
printf("===OPÇÃO INVÁLIDA!=== \n");
system("pause");
break;
}
}
return(0);
}
//Adicionar um elemento no final da Fila
void fila_entrar(){
if (fila.fim == tamanho){
printf("\nA fila está cheia!\n\n");
system("pause");
}
else{
printf("\nDigite o RA do aluno: ");
scanf("%s", &fila.dados[fila.fim].ra_aluno);
fflush(stdin);
printf("\nDigite o nome do arquivo: ");
scanf("%s", &fila.dados[fila.fim].arq);
fflush(stdin);
printf("\nDigite a extensão do arquivo: ");
scanf("%s", &fila.dados[fila.fim].ext_arq);
fflush(stdin);
printf("\nDigite a matrícula do professor: ");
scanf("%s", &fila.dados[fila.fim].matri_prof);
fflush(stdin);
system("cls");
fila.fim++;
}
}
void fila_sair(){
if (fila.ini == fila.fim){
printf("\nA fila está vazia!\n\n");
system("pause");
system("cls");
}
else{
int i;
for (i = 0; i < tamanho; i++){
fila.dados[i] = fila.dados[i+1];
}
fila.dados[fila.fim];
fila.fim--;
}
}
void esvaziar_fila(){
if (fila.fim == fila.ini){
printf("\nA fila está vazia!\n\n");
system("pause");
}
else{
while (fila.ini != fila.fim){
fila.fim--;
}
system("cls");
}
}
void fila_mostrar(){
int i;
printf("");
for (i = 0; i < tamanho; i++) {
printf("RA do aluno: %s \n", fila.dados[i].ra_aluno);
printf("Nome do arquivo: %s \n", fila.dados[i].arq);
printf("Ext. Arquivo: %s \n", fila.dados[i].ext_arq);
printf("Matrícula do professor: %s \n", fila.dados[i].matri_prof);
printf("------------------------------\n");
}
printf("\n\n");
}
void menu_mostrar(){
printf("========SISTEMA ACADÊMICO========\n");
printf("\n");
printf("1 - Inserir um elemento na fila\n");
printf("2 - Remover um elemento da fila\n");
printf("3 - Esvaziar a fila\n");
printf("4 - Encerrar o programa\n");
printf("\n");
printf("Escolha uma opção\n");
}