Ir ao conteúdo
  • Cadastre-se
Renan José da Silva

Arquivo em c

Recommended Posts

Olá pessoal! Estou com um probleminha. Preciso fazer um programa de cadastro de produtos (em c), e esse cadastro precisa ser salvo em um arquivo. Até ai tudo bem, eu fiz e funcionou corretamente. Porém, cada produto precisa de um tipo de  "código" único que deve ser gerado pelo próprio programa e esse código não pode se repetir em outros produtos. Preciso de uma maneira que o programa continue gerando códigos únicos mesmo após o programa ser fechado e aberto novamente. Vou deixar o código do que fiz até agora. Caso tenha que mudar algo pra adaptar essa função podem dizer. Alguém ai pode dar uma mãozinha? :)

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <locale.h>
#include <strings.h>


	struct Produto
	{
		int codprod;
		
		char nomeprod[15];
		
		float preco = 0;
		int qtdarm = 0;
		
		char desc[100];
	};

main()
{	
	setlocale(LC_ALL, "");
	
	struct	Produto produto;
	
	int op = 0;
	
	
		FILE *arquivo;
		
		arquivo = fopen("bd.txt", "a");
		fclose (arquivo);
		
	
		printf("Escolha uma opção:\n");
	

		while(op != 9)
	
	{
		
			printf("\nEscolha 1 para cadastrar um novo produto\n");
			printf("\nEscolha 2 para mostrar os produtos ja cadastrados\n");
			printf("\nEscolha 9 para encerrar o programa\n\n");
			
			scanf("%d", &op);
			
				switch(op)
		{
			
						
			case 1:
				
				setbuf(stdin, NULL);
				printf("\n");
				arquivo = fopen("bd.txt", "a");
							
					
				
				printf("Nome do produto: ");
				gets(produto.nomeprod);
				fprintf(arquivo, "\nNome do produto: %s", produto.nomeprod);
				
								
				printf("Preço: ");
				scanf("%f", &produto.preco);
				fprintf(arquivo,"\nPreco do produto: %.2f", produto.preco);
				
				printf("Quantidade armazenada: ");
				scanf("%d", &produto.qtdarm);
				fprintf(arquivo, "\nQuantidade armazenada: %d", produto.qtdarm);
					
				setbuf(stdin, NULL);
				printf("Descricao: ");
				gets(produto.desc);
				fprintf(arquivo, "\nDescricao: %s", produto.desc);
				
				fclose (arquivo);
				break;
				
			
			
			case 2:
				
				arquivo = fopen("bd.txt", "r");
				
				char arq[500];
			
				
					if(fgets(arq, 500, arquivo) == NULL)
				{
				
					printf("Não há produtos cadastrados");
					
				}
				
					while(fgets(arq, 500, arquivo) != NULL)
				{
					printf("\n%s\n", arq);
				}
				
					fclose(arquivo);
					
					break;
					
								
			case 3:
				
				printf("\nPrograma incerrado\n");
				fclose(arquivo);
				break;
		}
	}
	
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode por exemplo deixar o primeiro valor no arquivo ser um int, no caso o ultimo (ou proximo) codigo usado. Toda vez q iniciar o programa você lê o primeiro int que vai ser o codigo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×