#include <stdio.
h>
#include <string.h>
typedef struct {
char nome[50];
char marca[50];
int quantidade;
float preco;
char fornecedor[50];
char descricao[100];
int codigo;
} Produto;
void consultar(Produto produtos[], int n) {
int i, codigo;
printf("Digite o código do produto que deseja consultar: ");
scanf("%d", &codigo);
for (i = 0; i < n; i++) {
if (produtos[i].codigo == codigo) {
printf("Produto encontrado:\n");
printf("Nome: %s\n", produtos[i].nome);
printf("Marca: %s\n", produtos[i].marca);
printf("Quantidade: %d\n", produtos[i].quantidade);
printf("Preço: %.2f\n", produtos[i].preco);
printf("Fornecedor: %s\n", produtos[i].fornecedor);
printf("Descrição: %s\n", produtos[i].descricao);
printf("Código: %d\n", produtos[i].codigo);
return;
}
}
printf("Produto não encontrado.\n");
}
void excluir(Produto produtos[], int *n, int codigo) {
int i, posicao = -1;
for (i = 0; i < *n; i++) {
if (produtos[i].codigo == codigo) {
posicao = i;
break;
}
}
if (posicao == -1) {
printf("Produto não encontrado.\n");
return;
}
// Shift todos os elementos após a posição para a esquerda
for (i = posicao; i < *n - 1; i++) {
produtos[i] = produtos[i + 1];
}
(*n)--; // Decrementa o número de produtos
printf("Produto excluído com sucesso.\n");
}
void atualizar(Produto produtos[], int n, int codigo) {
int i, posicao = -1;
// Procurar a posição do produto com o código informado
for (i = 0; i < n; i++) {
if (produtos[i].codigo == codigo) {
posicao = i;
break;
}
}
if (posicao == -1) {
printf("Produto não encontrado.\n");
return;
}
printf("Digite os novos dados do produto:\n");
printf("Nome: ");
fgets(produtos[posicao].nome, sizeof(produtos[posicao].nome), stdin);
produtos[posicao].nome[strcspn(produtos[posicao].nome, "\n")] = '\0'; // Remove a nova
linha
printf("Marca: ");
fgets(produtos[posicao].marca, sizeof(produtos[posicao].marca), stdin);
produtos[posicao].marca[strcspn(produtos[posicao].marca, "\n")] = '\0';
printf("Quantidade: ");
scanf("%d", &produtos[posicao].quantidade);
printf("Preço: ");
scanf("%f", &produtos[posicao].preco);
printf("Fornecedor: ");
fgets(produtos[posicao].fornecedor, sizeof(produtos[posicao].fornecedor), stdin);
produtos[posicao].fornecedor[strcspn(produtos[posicao].fornecedor, "\n")] = '\0';
printf("Descrição: ");
fgets(produtos[posicao].descricao, sizeof(produtos[posicao].descricao), stdin);
produtos[posicao].descricao[strcspn(produtos[posicao].descricao, "\n")] = '\0';
printf("Produto atualizado com sucesso.\n");
}
void salvarEmArquivo(Produto produtos[], int n) {
FILE *arquivo;
arquivo = fopen("[Link]", "w");
if (arquivo == NULL) {
printf("Erro ao abrir o arquivo.\n");
return;
}
for (int i = 0; i < n; i++) {
fprintf(arquivo, "%s;%s;%d;%.2f;%s;%s;%d\n",
produtos[i].nome,
produtos[i].marca,
produtos[i].quantidade,
produtos[i].preco,
produtos[i].fornecedor,
produtos[i].descricao,
produtos[i].codigo);
}
fclose(arquivo);
printf("Dados salvos com sucesso.\n");
}
void cadastrar(Produto *produto) {
printf("Nome: ");
fgets(produto->nome, sizeof(produto->nome), stdin);
produto->nome[strcspn(produto->nome, "\n")] = '\0'; // Remove a nova linha
printf("Marca: ");
fgets(produto->marca, sizeof(produto->marca), stdin);
produto->marca[strcspn(produto->marca, "\n")] = '\0';
printf("Quantidade: ");
scanf("%d", &produto->quantidade);
printf("Preço: ");
scanf("%f", &produto->preco);
printf("Fornecedor: ");
fgets(produto->fornecedor, sizeof(produto->fornecedor), stdin);
produto->fornecedor[strcspn(produto->fornecedor, "\n")] = '\0';
printf("Descrição: ");
fgets(produto->descricao, sizeof(produto->descricao), stdin);
produto->descricao[strcspn(produto->descricao, "\n")] = '\0';
printf("Código: ");
scanf("%d", &produto->codigo);
printf("Produto cadastrado com sucesso!\n");
}
void lerArquivo(Produto produtos[], int *n) {
FILE *arquivo;
arquivo = fopen("[Link]", "r");
if (arquivo == NULL) {
printf("Erro ao abrir o arquivo.\n");
return;
}
int i = 0;
while (fscanf(arquivo, "%[^;];%[^;];%d;%f;%[^;];%[^;];%d",
produtos[i].nome,
produtos[i].marca,
&produtos[i].quantidade,
&produtos[i].preco,
produtos[i].fornecedor,
produtos[i].descricao,
&produtos[i].codigo) == 7) {
i++;
}
*n = i; // Atualiza o número de produtos lidos
fclose(arquivo);
printf("Dados carregados com sucesso.\n");
}
int main() {
Produto produtos[100]; // Array para armazenar os produtos
int n = 0, opcao, codigo;
lerArquivo(produtos, &n); // Carrega os dados do arquivo
do {
// Menu de opções
printf("\nMenu:\n");
printf("1. Cadastrar\n");
printf("2. Consultar\n");
printf("3. Excluir\n");
printf("4. Atualizar\n");
printf("5. Sair\n");
printf("Opcao: ");
scanf("%d", &opcao);
switch (opcao) {
case 1:
cadastrar(&produtos[n]);
n++;
break;
case 2:
consultar(produtos, n);
break;
case 3:
printf("Digite o código do produto a ser excluído: ");
scanf("%d", &codigo);
excluir(produtos, &n, codigo);
break;
case 4:
printf("Digite o código do produto a ser atualizado: ");
scanf("%d", &codigo);
atualizar(produtos, n, codigo);
break;
case 5:
break;
default:
printf("Opção inválida.\n");
}
} while (opcao != 5);
// Salvar os dados em um arquivo antes de sair
salvarEmArquivo(produtos, n);
return 0;
}