Ir para conteúdo
Fórum Script Brasil
  • 0

Ajuda com Struct e Arquivo


RodolphoPivetta

Pergunta

Bom dia, sou novo no fórum.

Estou na seguinte situação: Tenho um trabalho da faculdade onde eu preciso criar um sistema de cadastramento de veículos de uma Garagem de carros usados. O que eu quero fazer é usar uma struct com as variáveis dos dados que vou cadastrar de cada carro, e após a leitura das variáveis dessa struct, colocar esses dados dentro de um arquivo "carros.dat" (Necessariamente esse nome e essa extensão).

Bom... Desenvolvi o código, estruturado em procedimentos, meu problema é na hora de inserir essas variáveis dentro do arquivo, não entra nenhum dado dentro dele. Vou postar o código inteiro, se alguém puder me ajudar, ficaria grato.

/**
 @author Rodolpho Pivetta Sabino
 */
#include <stdio.h>
#include <string.h>

struct CARRO {

    char placa[9];
    char modelo[15];
    char fabricante[20];
    int anoFabricacao;
    int anoModelo;
    int combustivel;
    float preço;
};

FILE *abreArquivo(char *carros, char *modo) {

    FILE *pfile;

    if ((pfile = fopen (carros, modo)) == NULL) {

        printf ("Erro ao abrir o arquivo %s", carros);
        exit (100);
    }
    return (pfile);
}

void leituraMenu (FILE *c) {

    int opc;

    printf ("\t\também vindo ao Sistema da Empresa SpaceCar\n\t\t\tInforme Sua Escolha\n\n\
    1. Inserir um carro no cadastro\n\
    2. Retirar um carro do cadastro (carro vendido)\n\
    3. Ordenar os carros da forma desejada\n\
    4. listagem dos carros disponiveis para venda\n\
    5. Encerrar Sistema\n\nSua Escolha: ");

    scanf ("%d", &opc);
    menu(c,opc);
}

void menu (FILE *c, int opc) {

    struct CARRO car;

    switch (opc){
        case 1:

            system ("cls");
            printf ("\t\tInserindo carro no cadastro\n\n");

            fflush(stdin);

            lerDadosCarro(&car);

            fwrite(&car,sizeof(car),1,c);

            fflush(stdin);

            system ("pause");
            system ("cls");

            leituraMenu(c);
        break;
        /*
        case 2:

        break;
        case 3:

        break;
        case 4:

        break;*/
        case 5:
            system ("cls");
            printf ("\n\n\n\n\n\n\t\tObrigado por utilizar o Sistema SpaceCar\n\n\n\n\n\n\n");
        break;
        default:
            printf ("Opcao Invalida\n");
            system ("pause");
            system ("cls");
            leituraMenu(c);
    }
}

void lerDadosCarro (struct CARRO *car) {

    printf ("Informe a placa do carro da seguinte forma: AAA-0000\nPlaca: ");
    do {
        gets(car->placa);
    } while ((strlen(car->placa))!=8||car->placa[3]!='-');

    printf ("Informe o modelo do carro: ");
    gets (car->modelo);

    printf ("Informe o fabricante do carro: ");
    gets (car->fabricante);

    printf ("Informe o Ano de Fabricacao: ");
    scanf ("%d", &car->anoFabricacao);

    printf ("Informe o Ano do Modelo: ");
    scanf ("%d", &car->anoModelo);

    printf ("Informe o tipo de combustivel\n1 - Alcool\n2 - Diesel\n3 - Gasolina\nOpcao: ");
    do {

        scanf ("%d", &car->combustivel);
    } while (car->combustivel<1||car->combustivel>3);

    printf ("Informe o preço de venda: ");
    scanf ("%f", &car->preço);
}

void fechaArquivo (FILE *c, char *carros) {

    if (fclose(c) == EOF) {

        printf ("Erro ao encerrar o arquivo %s", carros);
        exit (102);
    } else {
            remove ("carros.dat");
        }
}

int main() {

    FILE *c;
    char carros[]="carros.dat";

    c=abreArquivo(carros, "w+");
    leituraMenu(c);
    fechaArquivo(c,carros);
    return 0;
}

Abraços

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...