#include <stdio.h>
#include <ctype.h>
#include <locale.h>
#include <cstdlib>
#define MAXGIBI 4
typedef struct Gibis
{
int codrev;
char descri[30];
float valorestm;
} Gibis;
struct Gibis Gibi[MAXGIBI];
void menu();
void imprimir();
void cadastrar();
void listar();
void buscar();
int main()
{
setlocale(0, "portuguese");
menu();
return 0;
}
void menu()
{
int op;
do
{
printf(" \n MENU: ");
printf(" \n 1 - CADASTRAR \n 2 - LISTAR REGISTROS \n 3 - BUSCAR GIBIS \n 0 - SAIR");
printf(" \n Informe o número da operação desejada: ");
scanf("%d", &op);
switch(op)
{
case 1:
cadastrar();
break;
case 2:
listar();
break;
case 3:
buscar();
break;
case 0:
printf("\n Programa encerrado.\n");
return;
default:
printf(" \n Opção não existente. Tente novamente.\n");
break;
}
} while(op!=0);
}
void cadastrar()
{
//system("clear");
system("cls");
//int opc;
printf("\n Cadastro de Gibis\n");
for (int i = 0; i < MAXGIBI; i++){
printf("\n Informe o Codigo %d: ", i+1);
scanf("%d", &Gibi[i].codrev);
getchar();
printf(" Informe a Descricao %d: ", i+1);
gets(Gibi[i].descri);
printf(" Informe o Valor %d: ", i+1);
scanf("%f", &Gibi[i].valorestm);
}
printf("\n Cadastros concluidos. \n");
}
void listar()
{
system("clear");
// system("cls");
printf("\n Lista de Gibis cadastrados\n");
for (int i = 0; i < MAXGIBI; i++){
printf(" \n Gibi %d \n", i+1);
printf(" \n Codigo: %d ", Gibi[i].codrev);
printf(" \n Descricao: %s ", Gibi[i].descri);
printf(" \n Valor: %.2f ", Gibi[i].valorestm);
printf(" \n \n");
}
}
void buscar()
{
//system("clear");
system("cls");
printf("\n Buscar Gibis\n");
int cod;
printf("\n Informe o código do Gibi: ");
scanf("%d", &cod);
for(int i = 0; i < MAXGIBI; i++)
{
if(cod == Gibi[i].codrev)
{
printf(" \n Gibi %d \n", i+1);
printf(" \n Código: %d ", Gibi[i].codrev);
printf(" \n Descrição: %s ", Gibi[i].descri);
printf(" \n Valor: %.2f ", Gibi[i].valorestm);
} else {
printf("\n Registro nao encontrado.");
}
}
}
Vê se funciona. Quanto ao gets acho que é só um aviso do compilador.
Qualquer coisa só retornar aqui.