Data is not recorded in the files in c

Asked

Viewed 24 times

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");
}
No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.