Olá,
Criei esse código para um projeto da faculdade que gera um arquivo txt caso o usuário opte por fechar o caixa. Mas, o txt está gerando com linhas na mesma sequencias dos registros de vendas, e não tabulado como a string espera: "Codigo: 1, Nome: arroz, Valor: R$ 4.00, Peso: 2.0Codigo: 3, Nome: ovo, Valor: R$ 18.00, Peso: 9.00Codigo: 3, Nome: abacate, Valor: R$ 24.00, Peso:" enquanto deveria ser: Codigo: 1, Nome: arroz, Valor: R$ 4.00, Peso: 2.0 Codigo: 3, Nome: ovo, Valor: R$ 18.00, Peso: 9.00 Codigo: 3, Nome: abacate, Valor: R$ 24.00, Peso: 1
Obs.: Inclui a parte do código que somente faz o caixa. Por isso, pode parecer incompleto.
O codigo é:
#include <stdio.h> #include <stdlib.h>
int main(){{
int numero; char nomeproduto[50]; // vetor para armazenar o nome do produto int codigoproduto; float valorproduto; float pesoproduto; FILE *file; // ponteiro para criacao do arquivo do fechamento do caixa
// Variáveis para armazenar as vendas
char vendas[50][50]; // array para armazenar as vendas
int index = 0; // indice para controlar a quantidade de vendas registradas
do {
printf("\nOPCOES DISPONIVEIS NO PDV.\n");
printf("****************************************\n");
printf("1. Registrar venda\n");
printf("2. Realizar fechamento do caixa\n");
printf("3. Sair do PDV\n");
printf("Digite a opcao desejada: ");
scanf("%d", &numero);
switch (numero) {
case 1: {
// estrutura de repeticao para registrar vendas até o usuário decidir parar
int continuarVenda = 1; // varivel para controlar se o usuário quer continuar vendendo
while (continuarVenda) {
printf("Digite o codigo do produto: ");
scanf("%d", &codigoproduto);
printf("Digite o nome do produto: ");
scanf("%s", nomeproduto);
printf("Digite o valor do produto: ");
scanf("%f", &valorproduto);
printf("Digite o kg do produto: ");
scanf("%f", &pesoproduto);//bloco de codigo que solicita as informacoes do produto
float valorTotal = valorproduto * pesoproduto;
printf("O valor total do produto e: R$ %.2f. \n", valorTotal);
//string que armazena as vendas informadas
snprintf(vendas[index], sizeof(vendas[index]), "Codigo: %d, Nome: %s, Valor: R$ %.2f, Peso: %.2fkg\n", codigoproduto, nomeproduto, valorTotal, pesoproduto);
index++; //incremento que passa para a proxima venda
printf("Deseja registrar outra venda? (1 - Sim, 0 - Nao): ");// pergunta ao usuario se vai continuar as vendas
scanf("%d", &continuarVenda);
}
break;
}
case 2: {
// abre o arquivo para gravar as vendas
file = fopen("vendas.txt", "w"); // cria o arquivo com os registro das vendas
if (file == NULL) {
printf("Erro ao abrir o arquivo!\n");
break; //condicao caso de erro ao abrir o arquivo
}
for (int i = 0; i < index; i++) {
fprintf(file, "%s", vendas[i]); //estrutura de repeticao for que usa o incremento para gravar as vendas dentro do arquivo;
}
fclose(file);
printf("Fechamento do caixa realizado com sucesso! Vendas registradas em vendas.txt.\n");
break;
}
case 3:
printf("Saindo do PDV...\n");
break;
default:
printf("Opcao invalida! Por favor, escolha uma opcao entre 1 e 3.\n");
break;
}
} while (numero != 3); //estrutura que finaliza a estrutura de repeticao enquanto o usuario nao apertar 3
printf("Obrigado pela compra!\n");
return 0;
} }