Ho una struct Utente...
Ho un file che contiene vari utenti.codice:typedef struct { char nickname[NICKNAME]; char password[PASSWORD]; int permesso; }Utente;
Devo creare una fuzione che prende in input UN utente e mi dice se è già presente nel file.
Ho buttato giù una cosa del genere:
Ma ovviamente non funziona, non conta nemmeno gli utenti ed esce la scrittacodice:Utente cercaNome(Utente utente) { Utente temp; memset(temp.nickname,0,sizeof(temp.nickname)); memset(temp.password,0,sizeof(temp.password)); int cont = 0; //Apro il file login FILE *f; f = fopen("login","r"); //posizionato nella medesima cartella del programma.. if(f == NULL) { printf("Errore apertura elenco utenti\n"); chiudiServer(); } //Conteggio gli utenti presenti else { while(fscanf(f,"%s %s %d",temp.nickname,temp.password,&temp.permesso) == -1) { if(errno != EINTR) { printf("\nErrore fscanf 1\n"); chiudiServer(); } } while(!feof(f)) { while(fscanf(f,"%s %s %d",temp.nickname,temp.password,&temp.permesso) == -1) { if(errno != EINTR) { printf("\nErrore fscanf 2\n"); chiudiServer(); } } ++cont; } printf("Numero utenti presenti: %d\n", cont); rewind(f); //Riposizionamento indice del file //Ricerca dell'utente int i; for(i=0; i<cont; i++) { while(fscanf(f,"%s %s %d",temp.nickname,temp.password,&temp.permesso) == -1) { if(errno != EINTR) { printf("\nErrore fscanf 3\n"); chiudiServer(); } } if(strcmp(utente.nickname,temp.nickname) == 0) { //Utente trovato while(fclose(f) != 0) { if(errno != EINTR) { printf("\nErrore fclose 1\n"); chiudiServer(); } } return temp; } } while(fclose(f) != 0){ if(errno != EINTR){ printf("\nErrore fclose 2\n"); chiudiServer(); } } Utente vuoto = { "NULL", "NULL", 0 }; //Utente non trovato return vuoto; } }
smash stack detected, una cosa simile..![]()

Rispondi quotando
