Exercicio 5

A) Definir Estrutura

struct Carro{
    char marca[15];
    char modelo[15];
    int ano;
    float preco;
};

B) Função Inserir Carro

void inserirCarro(struct Carro coche[], int n){
    int i;
    for(i = 0; i < n; i++){
        // inserir marca
        printf("Insira a marca do carro: ");
            fflush(stdin);
            gets(coche[i].marca);
        // inserir modelo
        printf("Insira a modelo do carro: ");
            fflush(stdin);
            gets(coche[i].modelo);
        // inserir ano
        printf("Insira o ano de lancamento: ");
            scanf("%d",&coche[i].ano);
        // inserir preço
        printf("Insira o preco do carro: ");
            scanf("%f",&coche[i].preco);
    }

}

C) Função enviar carros para ficheiro

void enviarCarrosFile(char nomefile[], struct Carro coche[], int n){
    int i;
    FILE* ficheiro = fopen(nomefile, "w");

    if(ficheiro != NULL){


        for(i = 0; i < n; i++){
            fprintf(ficheiro,"%s | %s | %d | %.2f$",coche[i].marca,
                                                    coche[i].modelo
                                                    coche[i].ano,
                                                    coche[i].preco
            );
        }
        fclose(ficheiro);
    }
}

D) Função ler todos os carros do ficheiro

void mostrarCarro(char nomefile[], struct Carro coche[], int n, char marca[]){
    int i, encontrado = 0;
    FILE* ficheiro = fopen(nomefile, "r");

    if(ficheiro != NULL){
        for(i = 0; i < n; i++){
            // ler caros
            fscanf(ficheiro,"%s%s%d%f", coche[i].marca,
                                        coche[i].modelo,
                                        &coche[i].ano,
                                        &coche[i].preco
            );
            // checar marca
            /* presisa incluir a biblioteca <string.h> */
            if( strcmp(coche[i].marca, marca) == 0){
                printf("Marca : %s\n",coche[i].marca);
                printf("Modelo: %s\n",coche[i].modelo);
                printf("Ano   : %d\n",coche[i].ano);
                printf("Preço : %.2f$\n\n",coche[i].preco);
                encontrado++;
            }
        }
        if(encontrado == 0){
            printf("Não há nenhum carro disponível");
        }else{
            printf("%d carros disponíveis", encontrado);
        }
        fclose(ficheiro);
    }
}

E) Função MAIN()

int main()
{

    int N = 5;

    struct Carro carro[N];

    FILE* f = fopen("carro.txt", "w");

    inserirCarro(carro, N);
    enviarCarrosFile("carro.txt", carro, N);

    char pesquisa_marca[20];

    printf("Pesquizar por marca de carro:");
    fflush(stdin);
    gets(pesquisa_marca);
    mostrarCarro("carro.txt", carro, N, pesquisa_marca);

    return 0;
}