Ir ao conteúdo

Posts recomendados

Postado

problema no algoritmo a função "void preenche_fornecedor" preencho os dados dos forncedores e depois escrevo no arquivo esses dados com a função "void inputFornecedor()"  com a função "void preenche_produtos" eu faço o mesmo só que para produtos porém eu não queria ter que informar novamente os dados do cnpj e nome da  empresa queria informar apenas o id e com esse id na hora de visualizar buscar as informações referentes a cnpj e nome da empresa ja gravadas no arquivo.

Não sei como fazer isso ou se é possível alguem poderia  me ajudar codigo a abaixo.

#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[3];
	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("codigo do fornecedor: ");
	scanf ("%s", p->cod);
	fflush(stdin);
	printf("informe cnpj do fornecedor: ");
	scanf("%s",p->cnpj);
	fflush(stdin);
    	printf("nome 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);
	//fgets (p->nome,20,stdin);
	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 e escrever no arquivo
void inputFornecedor(){
	system("clear");
	int i;		
	char resp;
	FILE* f;
	f = fopen("testeafornecedor.txt", "ab");
	do
	{
		preenche_fornecedor(&fornecedores);
		fwrite(&fornecedores, sizeof(struct Fornecedor), 1, f);
			
		printf("gostaria de cadastrar outro fornecedor (s/n) ? \n");
		getchar();
		scanf("%c",&resp);
		
	}while(resp =='s');
	fclose(f);
	system("clear");
	menu();
}
// visualizar na tela informações escritas no arquivo
void visualizar_fornecedor(){
	system("clear");
			
	FILE* f;
	f = fopen("testeafornecedor.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");
	
	FILE* f;
	f = fopen("testeaestoque.txt", "ab");
	do
	{
	preenche_produtos (&produtos);
	fwrite(&produtos, 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");
	
		
	FILE* f;
	f = fopen("testeaestoque.txt", "rb");
	while (fread(&produtos, 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);
	
	switch (opcao){
		case 1:
			visualizar_Estoque();
		break;
		
		case 2:
			visualizar_fornecedor();
		break;
		
		case 3:
			inputEstoque();	
		break;
		
		case 4:
			inputFornecedor();
		break;
		
		case 5:
			system("clear");
			printf (" --------------EMPRESA ABC--------------\n");
			quebra_linha();
			quebra_linha();
		break;
		default:
			printf("valor invalido");
			quebra_linha();
			menu();

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

}

 

  • Curtir 1
Postado

@88games16  É só abrir o arquivo pra leitura e usar strcmp pra comparar o ID informado com o ID lido do arquivo, se for igual a próxima informação será o CNPJ (isso levando em consideração que na hora de cadastrar primeiro se informa o ID e depois o CNPJ)
+- assim
 

 Se no cadastro vem ID,CNPJ e depois empresa ficaria +- assim
FILE *x;
char id[100];
char cnpj[100][15];
x = fopen("arq.ini","r");
for(int z = 0; z < 100; z++)
{
 if(strcmp(id,cnpj[z]) == 0)
{ 
  //cnpj[z] seria o ID, z+1 a proxima informação lida (cnpj,nome...) então ésó salvar em um char e prosseguir..
 printf("%s",cnpj[z]); //Aqui seria a ID
 printf("%s",cnpj[z+1]); //Aqui seria o CNPJ
 printf("%s",cnpj[z+2]); //Aqui seria a EMPRESA
//você só teria que copiar para um char e usar na parte do código que você quer
}

 

  • Obrigado 1
  • Confuso 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...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!