Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2015
    Messaggi
    1

    Linguaggio c- ricerca riga per riga in un file

    salve ragazzi sono nuovo del forum, ho un problema con la lettura di un file e memorizzare i dati in una struct
    il file contiene una lista di dati di persone del tipo
    MARIO
    ROSSI
    27/11/95
    ROMA
    M
    FRANCO
    ADDANTE
    25/06/1987
    MILANO
    M
    .
    .
    .

    questa è la struct..

    codice:
    typedef struct person_struct{
        char surname[MAX_SURNAME];            /**< Stringa contenente il cognome. */
        char name[MAX_NAME];                /**< Stringa contenente il nome. */
        char birth_date[BIRTH_DATE_LEN];    /**< Stringa contenente la data di nascita. */
        char birth_place[MAX_BIRTH_PLACE];    /**< Stringa contenente il luogo di nascita. */
        char sex;                            /**< Carattere che indica il sesso. */
        char cf[CF_LEN];                    /**< Stringa contenente il codice fiscale. */
    }person;

    questa è la mia funzione chiamata che riceve il file e ne legge 5 righe..il problema sta nel fatto che al primo giro riesco a leggere i dati e momorizzarli nella struct ma quando chiamo di nuovo la funzione e quindi accedo di nuovo al file non mi parte dalla sesta riga ovvero quella contenente altri dati anagrafici di persone.. ho provato a usare un puntatore di posizione ma con scarsi risultati.. spero voi riusciate a risolvere il problema.. grazie in anticipo..


    codice:
    person* read_person(FILE* people_file){
    
    person struct_person; //struct del tipo person
    fpos_t* pos;  //indicatore di posizione
    
    
        if(people_file == NULL){
            printf("Impossibile aprire il file.\n");
            exit(1);
        }
         
            fsetpos(people_file,pos);
         
            fgets(struct_person.surname, MAX_SURNAME, people_file);
          
            fgets(struct_person.name, MAX_NAME, people_file);
          
            fgets(struct_person.birth_date, BIRTH_DATE_LEN, people_file);
    
            fgets(struct_person.birth_place, MAX_BIRTH_PLACE, people_file);
          
            struct_person.sex = fgetc(people_file);
           
        
            fgetpos (people_file, pos);
            person_ptr=&struct_person;
    
    return person_ptr;
    }

  2. #2
    Attento che fgets() e fgetc() si comportano in modo diverso con i "ritorno a capo"
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.