Запись и чтение структуры в двоичный файл в C (NetBeans) не работает - PullRequest
0 голосов
/ 23 мая 2018
## MY STRUCT ##


    typedef struct clientes{
        int cod_cliente;
        char name[100];
        char country[100];
        char city[100];
        char email[100];
        int nif;
        char n_passporte[50];
        char n_carta_conducao[50];
        char telefone[50];
    }CLIENTE;


    typedef struct Elem{
        VEICULO info_veiculo;
        CLIENTE info_cliente;
        ALUGADO info_alugado;
        struct Elem *seguinte;
    }ELEMENTO;

## FUNCTIONS ##



       int saveBinaryCliente(ELEMENTO *iniLista){
             ELEMENTO *aux = NULL;
            FILE *fp = NULL;
            int res=0;

            fp = fopen("clientes.dat", "wb");

            if(fp == NULL){
                printf("Erro ao abrir o ficheiro clientes!\n");
                return -1;
            }

            for(aux=iniLista; aux!=NULL; aux=aux->seguinte){

        /*
                printf("%i %s %s %s %i %s %s %s %s\n", aux->info_cliente.cod_cliente, aux->info_cliente.nome, aux->info_cliente.pais, aux->info_cliente.cidade, aux->info_cliente.nif, aux->info_cliente.n_passporte, aux->info_cliente.n_carta_conducao, aux->info_cliente.email, aux->info_cliente.telefone);

        */

Получает каждый параметр до этого printf выше

                res = fwrite(aux, sizeof(CLIENTE), 1, fp);
            }

            fclose(fp);
            printf("Saved %i register clientes!\n", res);
            return 0;
        }

        int readDataCliente(ELEMENTO **iniLista){
            CLIENTE aux;
            int res=0;
            FILE *fp = NULL;

            fp = fopen("clientes.dat", "rb");

            if(fp == NULL){
                printf("Error reading file clientes!\n");
                return -1;
            }

            while (!feof(fp)){
                res = fread(&aux, sizeof(CLIENTE), 1, fp);

                if (res){
                    inserirCliente(&(*iniLista), aux);  
                }
            }
            fclose(fp);
            return 0;
            }

## OUTPUT ##

СПИСОК ПЕРЕД ЗАКРЫТИЕМ С 1 КЛИЕНТОМ ВСТАВЛЕНО

            1 nuno portugal porto 23421342 ASDFA0942 ASDF-434 ssss@hotmail.com +351093856273

             **AFTER CLOSING PROGRAM AND SAVE TO BINARY FILE**

                *****************************************************
                *                MENU  CLIENTES                     *
                *****************************************************
                *                                                   *
                *   1 - INSERT NEW CLIENTE                          *
                *   2 - CHANGE INFO CLIENTE                         *
                *   3 - LIST CLIENTES                               *
                *****************************************************

                Choose your CHOICE: 3
                0    0    
                0    0    

странный факт ... все, казалось, работало раньше.Не знаю, почему не работает сейчас, и это также экономит, когда я не вставляю клиента и не читаю его.Некоторое время я совал голову, поэтому решил попросить вас, ребята, о вашей помощи, спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...