STRTOK non funziona come dovrebbe

di il
5 risposte

STRTOK non funziona come dovrebbe

Salve a tutti, vorrei che qualcuno mi aiutasse nel mio problema:

- quando vado a parsare il file csv, le persone che hanno due nomi il secondo nome le conta come due colonne

codice:

   void getStructValues(FILE* fp) {

    char buffer[1024];
    int righe = 0, colonne = 0, i = 0;

    while(fgets(buffer, 1024, fp)) {
        colonne = 0;
        righe++;

        char* value = strtok(buffer, ", ");

        while(value) {
            switch(colonne) {
                case 0:
                    printf("Prima Colonna: %s\n", value);
                    break;
                case 1:
                    printf("Seconda Colonna: %s\n", value);
                    break;
                case 2:
                    printf("Terza Colonna: %s\n", value);
                    break;
                case 3:
                    printf("Quarta Colonna: %s\n", value);
                    break;
                case 4:
                    printf("Quinta Colonna: %s\n", value);
                    break;
                case 5:
                    printf("Sesta Colonna: %s\n", value);
                    break;
            }

            value = strtok(NULL, ", ");
            colonne++;
        }
    }
}
tabella:
ALLORIO,GIANMARIA,M,TO,5,24
AMERIO,DOMENICA,F,AL,6,29
ANFOSSI,DOMENICO,M,PV,13,29
BARBIERI,LAURA,F,NO,11,25
BARBIERI,ROSSANA,F,TO,9,18
BARLETTA,ELISABETTA GIOVANNA,F,NO,14,18
BASILICO,TERESA,F,AT,4,29
BERTINATO,ANDREA,M,CN,8,19
BOJERI,ANTONELLA,F,CN,9,23
BONINO,PAOLO,M,VC,4,27
BORELLI,FABIO,M,TO,5,22
BOSSO,FABIO,M,TO,11,23
BUSONERA,CRISTINA,F,NO,17,22
CARDIA,MARIA PAOLA,F,NO,10,19
CARESIO,LAURA,F,AL,15,23
CARLETTO,GERMANA,F,AT,11,23
CARLI,ROSSANA,F,TO,7,23
CARPINELLO,NADIA,F,CN,8,27
CASELLA,LAURA,F,PV,7,19
CASELLA,LAURA,F,PV,7,19
CASETTA,CATIA,F,TO,3,27
CASTELLANO,PAOLA,F,TO,9,21
CASUCCI,PAOLA,F,CN,2,28
CATALANO,ELISABETTA,F,TO,4,18
CERUTTI,IRENE,F,TO,4,26
CHESSA,FABRIZIO,M,PV,9,27
CHESSA,SERGIO,M,TO,6,22
COPPOLINO,MARCO,M,TO,3,28
CORAGLIOTTO,FABIO,M,TO,9,18
CRAVERO,FEDERICA,F,TO,11,18
CRIDA,ROBERTA,F,AL,9,25
DE SCALZI,DAVIDE,M,TO,12,29
DI TONNO,GIULIA AGNESE,F,TO,3,19
DUO',CRISTINA,F,TO,6,26
FARSETTI,RICCARDO,M,AL,15,18
FASANO,VIVIANA,F,AT,6,23
FAVELLA,FELICE,M,TO,5,23
FERRERO,ANDREA,M,NO,6,29
FERRERO,DANIELA,F,TO,5,25
GHILOTTI,LUIGI,M,AO,13,19
GIANOLA,FABRIZIO,M,VC,5,21
GIANOLIO,CIPRIANO,M,AT,11,21
GILLIO,FLORIANA,F,AT,2,18
GOFFI,ANTONIO,M,TO,11,19
GOSTO,FILIPPO,M,TO,3,22
GRI,ALBERTO,M,AO,15,27
GRILLO,ROBERTA,F,AT,13,24
ISABELLA,ALESSANDRO,M,AT,1,28
LAURENTI,GIANCARLO,M,NO,4,24
LUPARIA,GUALTIERO,M,TO,3,20
MARCHISIO,MARIA ANTONELLA,F,CN,15,20
MARCHISIO,BARBARA,F,TO,14,19
MARCOLIN,STEFANO,M,TO,2,29
MARIN,ELENA,F,CN,3,18
MAROCCO,STEFANO,M,TO,3,24
MAROVINO,ELISABETTA,F,AO,3,21
MAZZA,ENRICO,M,AT,2,29
MELINI,CLAUDIO,M,TO,6,29
MERELLA,MANUELA MARINA,F,VC,11,24
MICUCCI,MASSIMO,M,TO,5,22
MONTALDO,DIEGO,M,CN,8,18
MONTANARI,GIACOMO,M,TO,6,25
MOURGLIA LESLEY,ROBERTO,M,TO,7,26
NEBIOLO,LOREDANA,F,TO,4,22
NOVELLO,ROBERTO,M,AO,3,21
ORLANDI,ALBERTO LUCA NICOLA,M,TO,18,21
PARRA SAIANI,PAOLA,F,TO,7,24
PATRIA,ALEXANDRE,M,NO,6,29
PERNETTA,DANIELE,M,TO,6,23
POZZI,ROBERTO,M,CN,2,20
PRENNA,FEDERICA,F,NO,2,21
PUTZU,EMANUELE,M,CN,8,23
PUTZU,EMANUELA,F,TO,3,24
RASERO,MARIA,F,TO,11,20
RAVETTI,ENRICA,F,TO,6,18
RINALDI,ILARIO,M,TO,2,23
RIVA,GIANLUCA,M,TO,12,26
RIZZITIELLO,ANGELA,F,NO,0,0
ROSSI,FABIO,M,CN,3,25
ROSSI,MARCO,M,CN,6,20
ROSSO,MARCO,M,AO,6,18
ROSSO,PAOLO,M,VC,11,27
RUGOLO,ALESSANDRO,M,TO,6,25
SOFFIETTI,MARINA ANGELA,F,NO,5,25
SPINELLO,ALBERTO,M,AO,2,26
SQUILLACI,EDGARDO,M,VC,10,18
SQUINOBAL,FEDERICO,M,TO,3,21
STRAZZA,ALESSANDRA,F,AL,3,24
SURAGNI,CRISTINA,F,AL,2,19
TECCO,DAVIDE,M,AT,2,19
TIRELLI,MASSIMO,M,VC,2,24
TONIETTI,DIEGO,M,AO,2,26
TOSATTO,PAOLO,M,NO,4,22
TRIPIEDI,FEDERICO,M,TO,3,22
TURANO,CRISTINA,F,TO,15,23
ULLASCI,GIANMARIO,M,TO,2,18
VAZIO,FRANCESCO,M,TO,7,20
VELARDI,ALFREDO,M,TO,8,19
qualcuno sa come risolvere?

5 Risposte

  • Re: STRTOK non funziona come dovrebbe

    Perché utilizzi ", " ?

    Devi usare solo la virgola senza spazio ","
  • Re: STRTOK non funziona come dovrebbe

    Lo utilizzo nel caso ci fosse la doppia "," (da quel che visto potrebbe dare problemi), comunque anche mettendo "," e basta dà lo stesso problema
  • Re: STRTOK non funziona come dovrebbe

    Lo utilizzo nel caso ci fosse la doppia "," (da quel che visto potrebbe dare problemi)
    Non capisco cosa intendi. In quella stringa c'è la lista dei caratteri usati come delimitatori.
    Se indichi la virgola e lo spazio avrai problemi perché verranno separati anche i doppi nomi e i doppi cognomi.

    A te serve solo la virgola.
    comunque anche mettendo "," e basta dà lo stesso problema
    Non è possibile, hai fatto la modifica in tutte e due le linee con la strtok ?
  • Re: STRTOK non funziona come dovrebbe

    [quote=oregon post_id=8677799 time=1628600815 user_id=9500
    Non è possibile, hai fatto la modifica in tutte e due le linee con la strtok ?
    [/quote]

    Alla fine era quella con il NULL che deva il problema (come hai detto tu)
  • Re: STRTOK non funziona come dovrebbe

    Sono tutte e due. La prima strtok vale per la prima linea del file e la seconda strtok per le altre linee.

    Ovviamente devi modificarle tutte e due
Devi accedere o registrarti per scrivere nel forum
5 risposte