Ir ao conteúdo

Posts recomendados

Postado

problema na void inputEstoque() está esta preenchendo o arquivo com vários 0000000, preciso de ajuda não sei o problema uma vez que o outro arquivo foi preenchido corretamente (void inputFornecedor() ) grato por qualquer ajuda ou apontamento de algum erro.

 

 

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

void menu();
void opcao_menu(); 
void visualizar_fornecedor();
void inputEstoque();
void visualizar_Estoque();
struct Fornecedor {
	char cod[2];
	char cnpj[15];
	char cia[20];
	
};
struct Produto{
	struct Fornecedor f;
	char nome[20];
	int  qtd;
	int custo;
	int valorc;	
	int venda;
};

struct Fornecedor fornecedores;
struct Produto produtos;

void quebra_linha(){
	printf("\n");
}

//preencher fornecedores
void preenche_fornecedor (struct Fornecedor *p){

	fflush(stdin);
	printf("\ncodigo do fornecedor: ");
	scanf ("%s", p->cod);
	fflush(stdin);
	printf("\ninforme cnpj do fornecedor: ");
	scanf("%s",p->cnpj);
	fflush(stdin);
    printf("\nnome da empresa: ");
   	scanf("%s",p->cia);
}

void preenche_produtos (struct Produto *p){

	preenche_fornecedor(&(*p).f);	
	printf ("informe o produto p/ cadastrar no estoque: ");
	//getchar();
	scanf("%s",p->nome);
	printf ("informe a quantidade da compra: ");
	scanf("%d",&p->qtd);
	printf("informe o preço unitario: ");
	scanf("%d",&p->custo);
	p->valorc=p->custo*p->qtd;
	printf("valor da mercadoria no estoque %d: ",p->valorc);
	p->venda = (p->valorc*1.4) - (p->valorc) ;
	
 }

// cadastrar fornecedor
void inputFornecedor(){
	system("clear");
	struct Fornecedor fornecedores;
	
	char resp;
	FILE* f;
	f = fopen("fornecedores.txt", "ab");
	do
	{
		preenche_fornecedor(&fornecedores);
		fwrite(&fornecedores, sizeof(struct Fornecedor), 1, f);
		/*fwrite(&fornecedores.cnpj, sizeof(char), strlen (fornecedores.cnpj), f);
		fwrite(&fornecedores.cia, sizeof(char), strlen (fornecedores.cia), f);*/	
		
		printf("gostaria de cadastrar outro fornecedor (s/n) ? \n");
		getchar();
		scanf("%c",&resp);
		
	}while(resp =='s');
	fclose(f);
	system("clear");
	menu();
}

void visualizar_fornecedor(){
	system("clear");
	struct Fornecedor fornecedores;
		
	FILE* f;
	f = fopen("fornecedores.txt", "rb");
	while (fread(&fornecedores, sizeof(struct Fornecedor), 1, f)==1){
		printf("---------------------------------------------");
		quebra_linha();			
		printf("Codigo de registro: %s\n", fornecedores.cod);
		printf("Cnpj: %s\n", fornecedores.cnpj);
		printf("Empresa %s\n", fornecedores.cia); 
		printf("---------------------------------------------");
		quebra_linha();	
	}		
	fclose(f);
	getchar();
	getchar();
	menu();
}
void inputEstoque(){
	char resp;	
	system("clear");
	struct Produto produtos;
	FILE* f;
	f = fopen("estoque.txt", "ab");
	do
	{
	preenche_produtos (&produtos);
	fwrite(&fornecedores, sizeof(struct Produto), 1, f);
	quebra_linha();	
	printf("gostaria de cadastrar outro produto (s/n) ? \n");
		getchar();
		scanf("%c",&resp);
		
	}while(resp =='s');
	fclose(f);
	system("clear");
	menu();

}

void visualizar_Estoque(){
	system("clear");
	struct Produto produtos;
		
	FILE* f;
	f = fopen("estoque.txt", "rb");
	while (fread(&fornecedores, sizeof(struct Produto), 1, f)==1){
		printf("---------------------------------------------");
		quebra_linha();			
		printf("Codigo de registro: %s\n", produtos.f.cod);
		printf("Cnpj: %s\n", produtos.f.cnpj);
		printf("Empresa %s\n", produtos.f.cia);
		printf ("Produto %s\n", produtos.nome);
		printf ("Quantidade %d\n", produtos.qtd);
		printf("preco unidade %d\n", produtos.custo);
		printf(" valor do estoque %d\n", produtos.valorc);	
 		printf("lucro esperado %d\n", produtos.venda);
		printf("---------------------------------------------");
		quebra_linha();	
	}		
	fclose(f);
	getchar();
	getchar();
	menu();
}

// menu
void menu (){
	system("clear");
    printf (" --------------ESTOQUE EMPRESA ABC--------------\n");
    quebra_linha();
	printf("Menu:\n");
	printf("1 - Consultar estoque cadastrado: \n");
	printf("2 - Consultar fornecedores cadastrados: \n");
	printf("3 - Cadastrar novo item no estoque: \n");
	printf("4 - Cadastrar novo fornecedor: \n"); 
	printf("5 - sair\n");
	opcao_menu(); 
}
void opcao_menu(){
	int opcao;
	
	scanf("%d",&opcao);
	while(opcao <1 || opcao>5){
		printf("opcao nao disponivel no menu\n");
		printf("digite o menu que deseja acessar: \n");
		scanf("%d",&opcao);
	}
	switch (opcao){
		case 1:
			visualizar_Estoque();
			
		break;
		
		case 2:
			visualizar_fornecedor();
		break;
		
		case 3:
			inputEstoque();	
		break;
		
		case 4:
			inputFornecedor();
			
		break;
		
		default:	
			printf("valor invalido");

	}
}
int main(){
 	menu();   
	
		
	
       return 0;
}

 

  • Curtir 1
  • Amei 1
Postado

@88games16      você está inicializando a struct nessa função , por isso ele grava zeros no arquivo :

void inputEstoque(){
	char resp;	
	system("cls");//aqui é cls 
	//struct Produto produtos;// aqui não precisa pois já foi criada essa variável
	FILE* f;

 

  • Curtir 1
  • Obrigado 1
Postado
3 horas atrás, devair1010 disse:

@88games16      você está inicializando a struct nessa função , por isso ele grava zeros no arquivo :


void inputEstoque(){
	char resp;	
	system("cls");//aqui é cls 
	//struct Produto produtos;// aqui não precisa pois já foi criada essa variável
	FILE* f;

 

cara muito obrigado o system("cls") não funcionou talvez por ser linux mas eu tirei a linha que declarava a struct dentro da função e deu certo 

  • Curtir 2
  • Obrigado 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...