在C(netbeans)中写入和读取结构到二进制文件不起作用

时间:2018-05-23 01:09:44

标签: c netbeans binaryfiles fwrite fread

## 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    
奇怪的是......所有人似乎都在工作。 Dunno为什么现在不工作,当我不插入客户端并读取它时它也会保存。我一直在戳我的头,所以我决定请你们帮忙,谢谢。

0 个答案:

没有答案