Problema con EOF

di il
2 risposte

Problema con EOF

Buongiorno ragazzi,

ho un file .csv caratterizzato da 6 colonne e da un certo numero di righe. Vorrei leggerlo e salvare i dati in una lista. Ho realizzato il seguente codice, usando EOF. Nel file ci sono 3 righe, ma cicla solo una volta. Cosa ho sbagliato? Grazie in anticipo

utente *lettura_Utenti(FILE *fp) {
		


    int t_id;
	int t_permessi;
    char t_nome[Char_size];
    char t_cognome[Char_size];
    char t_nick[Char_size];
    char t_password[Char_size];

    utente *testa_Utente = NULL;
    utente *temp_Utente = NULL; //temporanea


    if (fp == NULL) {

        printf("\t \t \t|      File non trovato!|\n");

        
    } else { 	
        
		while (fscanf(fp,"%d %d %s %s %s %s", &t_id ,&t_permessi, t_nome, t_cognome, t_nick, t_password) != EOF) {
    		//leggo una riga del file utenti.csv e la inserisco nel buffer
			//fgets(buf, BUFFER_SIZE, fp);
			           
			temp_Utente = (utente *) malloc(sizeof(utente));
            temp_Utente -> next_Utente = NULL;
			
			temp_Utente -> id = t_id;
			temp_Utente -> permessi = t_permessi;
			strcpy(temp_Utente -> nome, t_nome);
			strcpy(temp_Utente -> cognome, t_cognome);
			strcpy(temp_Utente -> nick, t_nick);
			strcpy(temp_Utente -> password, t_password);
			 
			// Inserimento in TESTA           
            temp_Utente -> next_Utente = testa_Utente;
            testa_Utente = temp_Utente;

        }
    }

    return testa_Utente;
    
}

2 Risposte

  • Re: Problema con EOF

    Nel file csv ci sono anche i ; (o le , ) ma tu non ne hai tenuto conto nella fscanf

    Mostra le 3 righe del file

  • Re: Problema con EOF

    Usare la “fscanf” (e sue varianti) e' sempre un po' un problema.

    Ti conviene leggere il file una riga per volta, smontarele varie parti e convertirle nel formato che ti serve.

Devi accedere o registrarti per scrivere nel forum
2 risposte