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;
}
}
}