Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
oi, to colocando meu codigo inteiro aqui ainda não finalizado, no cadastro de categoria preciso fazer a validação do codigo, para que não se repita, então criei uma função para isso, porém o programa está travando.
Alguém pode dar uma olhada e ver se encontram o erro?
Grata
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <string.h>
#include <ctype.h>
#define TAM 25
int menu()
{
system("cls");
fflush(stdin);
int op;
printf("**************MENU DE OPERACOES ***************");
printf("\n\n1 - Cadastra a Categoria");
printf("\n2 - Cadastra o Produto");
printf("\n3 - Registra a Venda");
printf("\n4 - Lista a Venda");
printf("\n5 - Resumo por Categoria");
printf("\n6 - Fim");
printf("\nInforme a opcao: ");
scanf("%d",&op);
if (op > 6 || op <1) {
printf ("\t Opcao errada, escolha entre 1 e 6 !!");
getch();
}
return op;
}
typedef struct categoria{
int cod_categ;
char nome_cat[TAM];
}t_categoria;
typedef struct produto{
int cod_prod;
char nome_prod[TAM];
float preço;
int codcategoria;
}t_produto;
typedef struct venda{
int prod;
int cat;
float total;
}t_venda;
t_categoria categoria;
t_categoria RegCat;
t_produto produto;
t_venda venda;
int achou=0;
FILE *pArqCat, *pArqprod, *pArqVenda;
/***********************VALIDA CATEGORIA***********************************/
int valida_cat()
{
while(!feof(pArqCat))
{
if(categoria.cod_categ == RegCat.cod_categ)
{
achou = 1;
}
}
return achou;
}
/************************************************ **************************/
/***********************CRIA ARQUIVO CATEGORIA*****************************/
void criaArqcat()
{
pArqCat = fopen("categoria","rb");
if(pArqCat == NULL)pArqCat = fopen("categoria","wb");
if(pArqCat == NULL)printf("Erro na abertura do arquivo!!");
system("pause > null");
}
}
fclose(pArqCat);
}/******************INSERE DADOS DA CATEGORIA NO ARQUIVO********************/
void inserecat()
{
int found=0;
char resposta
pArqCat = fopen("categoria","ab+");
do{
system("cls");
do{
printf("Informe o codigo: ");
scanf("%i",&categoria.cod_categ);
fread(&RegCat,sizeof(t_categoria),1,pArqCat);
found = valida_cat();
}while(categoria.cod_categ == 0 || found == 1);
printf("\nInforme o nome: ");
fflush(stdin);
gets(categoria.nome_cat);printf("\nCategoria gravada com sucesso");
getch();
}
printf("\n\nNova categoria: S/N: ");
scanf("%c",&resposta;
}while((resposta== 'S') || (resposta== 's'));
fclose(pArqCat);
}/***********************CRIA ARQUIVO PRODUTOS******************************/
void criaArqprod()
{
pArqprod = fopen("produto","rb");
if(pArqprod == NULL)pArqprod = fopen("produto","wb");
if(pArqprod == NULL)printf("Erro na abertura do arquivo!!");
system("pause > null");
}
}
fclose(pArqprod);
}/******************INSERE DADOS PRODUTO NO ARQUIVO*************************/
void insereprod()
{
char resposta
pArqprod = fopen("produto","ab+");
do{
system("cls");
do{
printf("Informe o codigo: ");
scanf("%i",&produto.cod_prod);
}while(produto.cod_prod == 0);
printf("\nInforme o nome: ");
fflush(stdin);
gets(produto.nome_prod);
printf("\nInforme o preço: ");
scanf("%f",&produto.preço);
printf("\nInforme a categoria do Produto");
scanf("%d",&produto.codcategoria);printf("\nCategoria gravada com sucesso!!");
getch();
}
printf("\n\nNova categoria: S/N: ");
scanf("%c",&resposta;
}while((resposta== 'S') || (resposta== 's'));
fclose(pArqprod);
}/****************************BLOCO PRINCIPAL*******************************/
int main()
{
int opcao;
opcao= menu();
criaArqcat();
criaArqprod();fflush(stdin);
switch(opcao)
{
case 1: inserecat();
break;
case 2: insereprod();
break;
/*case 3: registra();
break;
case 4: exibe();
break;
case 6: exit(1);system("cls");
opcao=menu();
}while(opcao != 6);
getch();
}Carregando comentários...