0
In this exercise I have to create a register of cars in two files. In one file I have to register all the cars, in the other I have to register only the sold ones, but only the files are created but the car data is not being registered. I’ve checked, but I can’t find the reason why I can’t fill out the data in the files.
#define ARQ_CARRO "carro.dat"
#define ARQ_A_VENDA "vendido.txt"
typedef struct {
int codigo; // código do automóvel
char marca[21]; // marca do automóvel, por exemplo,Chevrolet, VW
char modelo[21]; // modelo do automóvel, por exemplo, Onix, Up
int ano; // ano do modelo do automóvel
float preco; // preço de venda do automóvel
bool vendido; // indica se o automóvel foi vendido ou não
} carro;
void cadastrar_carro(void){
FILE *f;
carro a;
f = fopen(ARQ_AUTOMOVEIS, "ab");
if(f = NULL){
printf("Erro na abertura de arquivo!\n");
system("pause");
exit(1);
}
printf("<<<<<Cadastro de Carro>>>>\n");
fseek(f, 0, SEEK_END);
a.codigo = ftell(f) / sizeof(carro) + 1;
printf("Digite a Marca: ");
scanf(" %20[^\n]",a.marca);
printf("Digite o Modelo: ");
scanf(" %20[^\n]", a.modelo);
printf("Digite o Ano: ");
scanf("%d", &a.ano);
printf("Digite o Preço: ");
scanf("%f", &a.preco);
printf("Automovel Vendido? [1-S | 0-N]: ");
scanf("%d", &a.vendido);
fwrite(&a,sizeof(carro),1,f);
fclose(f);
if(a.vendido == true){
FILE *f1;
f1 = fopen(ARQ_A_VENDA, "ab");
if(f1 == NULL){
printf("Erro na abertura do arquivos de vendidos!\n");
system("pause");
return;
}
fwrite(&a,sizeof(carro),1,f);
fclose(f1);
}
printf("Veiculo cadastrado com Sucesso!\n");
}