Ir ao conteúdo
  • Cadastre-se

C ERRO ao escrever no arquivo


88games16

Posts recomendados

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
Link para o comentário
Compartilhar em outros sites

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
Link para o comentário
Compartilhar em outros sites

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...