Visualizzazione dei risultati da 1 a 7 su 7

Discussione: STRTOK in C

  1. #1
    Utente di HTML.it L'avatar di Cholo
    Registrato dal
    Aug 2002
    Messaggi
    680

    STRTOK in C

    Ciao a tutti.

    Ho un problemino in C.

    La funzione strtok l' ho sempre evitata ma ora mi servirebbe:

    Devo riempire una struttura da un file di testo.

    fate conto che una singola riga è scritta così:
    codice:
    15;VIA MAZZINI;54;10
    e la struttura così;
    codice:
    
    struct {
       int cod;
       char desc[150];
       coordX;
       coordY;
    }
    

    Prima la descrizione non c' era, quindi usavo SSCANF.
    Ma ora devo usare STRTOK, o forse no ?

    Sapete aiutarmi ?

  2. #2
    Utente di HTML.it L'avatar di Grunt
    Registrato dal
    Dec 2001
    Messaggi
    246
    Ti conviene leggere l'intera stringa dal file e metterla in buffer, poi usando strchr ti posizioni di volta in volta sul ';' in questo modo separi i campi e li metti dove vuoi..... e dal file leggi con fread

  3. #3
    Utente di HTML.it L'avatar di Cholo
    Registrato dal
    Aug 2002
    Messaggi
    680
    Dici ?
    Speravo di andare più veloce in qualche modo e poi volevo capire come funziona sta meledetta STRTOK.

    riguardo la tua idea:
    per definire la fine della stringa ? devo FETCHARE tutti i caratteri fino al ';'?

    Dal file leggo con fgets ma va bene lo stesso.

    L' idea la tengo in considerazione, grazie

  4. #4
    Utente di HTML.it L'avatar di Grunt
    Registrato dal
    Dec 2001
    Messaggi
    246
    Funzione strtok
    codice:
    char *strtok(char *s1, const char *sep)
    
    Chiamiamo token una sottostringa di s1 che non contenga caratteri
    contenuti nella stringa sep. la prima chiamata a strtok(s1, sep)
    restituisce un puntatore al primo token in s1. Ad esempio se s1 punta
    alla stringa
    
    "?:Pippo,Pluto**Paperino"
    
    la chiamata strtok(s1, ":,*?") restituisce un puntatore a "Pippo". Per
    ottenere i token successivi si dovranno fare ulteriori chiamate a strtok
    ma, attenzione, specificando NULL al posto di s1.  Nel nostro caso la
    chiamata strtok(NULL, ":,*?") restituisce la prima volta "Pluto" e la
    volta successiva "Paperino". Quando non ci sono piu' token il valore
    restituito e' il puntatore nullo. Dopo ogni chiamata la funzione scrive
    in s1 un carattere terminatore al posto del carattere successivo al token
    (per fissarne appunto la fine), rendendo cosi' s1 praticamente
    inutilizzabile. L'utilizzo tipico di strtok e' una prima chiamata che
    restituisce il primo token e un ciclo con le chiamate successive che
    termina al termine dei token.
    Spero ti sia di aiuto!!!

  5. #5
    Utente di HTML.it L'avatar di Cholo
    Registrato dal
    Aug 2002
    Messaggi
    680
    Ci provo dopo pranzo, Grazie !

  6. #6
    Utente di HTML.it L'avatar di Cholo
    Registrato dal
    Aug 2002
    Messaggi
    680
    OK, ha funzionato !

    Avevo frainteso l' utilizzo di STRTOK.

    Grazie Grunt

  7. #7
    Utente di HTML.it L'avatar di Grunt
    Registrato dal
    Dec 2001
    Messaggi
    246
    :adhone: Figurati!!?!?!

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 © 2025 vBulletin Solutions, Inc. All rights reserved.