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 !!");
Pergunta
baixinha_25
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 resp;
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);
if(fwrite(&categoria, sizeof(t_categoria), 1, pArqCat) > 0)
{
printf("\nCategoria gravada com sucesso");
getch();
}
printf("\n\nNova categoria: S/N: ");
scanf("%c",&resp);
}while((resp == 'S') || (resp == '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 resp;
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);
if(fwrite(&produto, sizeof(t_produto), 1, pArqprod) > 0)
{
printf("\nCategoria gravada com sucesso!!");
getch();
}
printf("\n\nNova categoria: S/N: ");
scanf("%c",&resp);
}while((resp == 'S') || (resp == 's'));
fclose(pArqprod);
}
/******************************************************************************/
/******************************BLOCO PRINCIPAL*********************************/
int main()
{
int opcao;
opcao= menu();
criaArqcat();
criaArqprod();
do{
fflush(stdin);
switch(opcao)
{
case 1: inserecat();
break;
case 2: insereprod();
break;
/*case 3: registra();
break;
case 4: exibe();
break;
case 6: exit(1);
break;*/
}
system("cls");
opcao=menu();
}while(opcao != 6);
getch();
}
Editado por quintelabtítulo alterado
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.