Discussione: Visual C++
View Single Post
Old 24-03-2013, 21:22   #1
pocho183
Junior Member
 
Iscritto dal: Mar 2013
Messaggi: 23
Visual C++

Ho un problema in questa funzione; praticamente legge nome,cognome,numero in un file. Il problema è che legge solo la prima riga, gli altri non li trova. esempio

Mario Rossi 1
Luca Verdi 2
ecc.

cerco i rispettivi nominativi, per rossi tutto ok per verdi anche se è nello stesso file non trova nulla.
potreste aiutarmi proponendo una soluzione?


Codice:
Record cercaRecord(Record record){
        Record recordTemp;

        /* Resetto i valori della struct recordTemp */

        memset(recordTemp.nome, 0, sizeof(recordTemp.nome));
        memset(recordTemp.cognome, 0, sizeof(recordTemp.cognome));
        memset(recordTemp.numeroTelefono, 0, sizeof(recordTemp.numeroTelefono));        
        int cont=0;

        /* Apertura dell'archivio "ElencoTelefonico.txt" */

        if(( ElencoTelefonico = fopen("ElencoTelefonico.txt", "r")) == NULL){
                printf("Non è possibile aprire l'elenco telefonico, verificare la consistenza dell'archivio"); 
                chiusuraServer();
        }
        else{   
                /* Lettura del file e conteggio del numero di record presenti */

			                while(fscanf(ElencoTelefonico, "%s %s %s", recordTemp.nome, recordTemp.cognome, recordTemp.numeroTelefono) == -1){
                                printf("\nErrore fscanf\n");
                                chiusuraServer();
                        }


                if(!feof(ElencoTelefonico)){
                        ++cont;
                }

                /* Riposizionamento dell'indice di lettura del file */

                rewind(ElencoTelefonico);

                /* Rilettura del file alla ricerca del record richiesto */


                for(int i=0; i<cont; ++i){
                        while(fscanf(ElencoTelefonico, "%s %s %s", recordTemp.nome, recordTemp.cognome, recordTemp.numeroTelefono) == -1){
                                        printf("\nErrore fscanf\n");
                                        chiusuraServer();
                                }
                        if((strcmp(record.nome, recordTemp.nome) == 0 && strcmp(record.cognome, recordTemp.cognome) == 0)){     
                                while(fclose(ElencoTelefonico) != 0){
                                                printf("\nErrore fclose\n");
                                                chiusuraServer();
                                        }

                                return recordTemp; 
						}
                }

				
                   /* Chiusura del file */

                while(fclose(ElencoTelefonico) != 0){
                                printf("\nErrore fclose\n");
                                chiusuraServer();
                        }

                /* Valore ritornato in caso in cui il record richiesto non sia presente nell'archivio */

                Record risultatoNullo = { "NULL", "NULL", "NULL" };
                return risultatoNullo;
        }
}
pocho183 è offline   Rispondi citando il messaggio o parte di esso