Jump to content
Fórum Script Brasil
  • 0

Ajuda com Struct e Arquivo


RodolphoPivetta

Question

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 to comment
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152k
    • Total Posts
      651.5k
×
×
  • Create New...