Olá! Preciso de ajuda nesse código. Já procurei vídeos e outros códigos similares mas nada ajudou. A questão é a seguinte:
Crie um programa com uma struct para cadastrar itens de uma coleção de
gibis, com os seguintes campos:
codrev int,
descri string[30],
valorestm float.
O programa deverá ter:
Um vetor de pelo menos 4 elementos para cadastrar os itens;
Menu com as opções: cadastrar, listar todos e buscar por codrev.
Para cada opção do menu fazer uma função;
Os erros são esses:
the gets function is dangerous and should not be used.
quando eu mudo de gets para fgets:
too few arguments to function fgets.
O último erro é na função buscar:
segmentation fault (core dumped)
Se alguém puder ajudar eu ficaria muito grato.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXGIBI 4
typedef struct Gibis
{
int codrev;
char descri[30];
float valorestm;
} Gibis;
struct Gibis Gibi[MAXGIBI];
void menu();
void imprimir();
void cadastrar();
int main()
{
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();
case 0:
printf("\n Programa encerrado.\n");
return 0;
default:
printf(" \n Opção não existente. Tente novamente.\n");
break;
}
} while(op!=0);
}
void cadastrar()
{
system("clear");
// system("cls"); comando de limpeza para windows
int opc;
printf("\n Cadastro de Gibis\n");
for (int i = 0; i < MAXGIBI; i++){
printf("\n Informe o Código %d: ", i+1);
scanf("%d", &Gibi.codrev);
getchar();
printf(" Informe a Descrição %d: ", i+1);
gets(Gibi.descri);
printf(" Informe o Valor %d: ", i+1);
scanf("%f", &Gibi.valorestm);
}
printf("\n Cadastros concluídos. \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 Código: %d ", Gibi.codrev);
printf(" \n Descrição: %s ", Gibi.descri);
printf(" \n Valor: %.2f ", Gibi.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.codrev)
{
printf(" \n Gibi %d \n", i+1);
printf(" \n Código: %d ", Gibi.codrev);
printf(" \n Descrição: %s ", Gibi.descri);
printf(" \n Valor: %.2f ", Gibi.valorestm);
} else {
printf("\n Registro não encontrado.");
}
}
}