PDA

Visualizza la versione completa : [C] stringa troncata con strtok


sparkling
14-01-2008, 13:16
Ciao!
Credo che il mio problema sia una cavolata ma e' un po' che ci sono a rovellarmi il cervello e non ho ancora trovato una soluzione..
Dunque:




if(fgets(riga,MAXDIM,f) != NULL)
{
if(riga == NULL) break;
if(riga[strlen(riga)-1]== '\n')
riga[strlen(riga)-1] = SZ;

str = strtok(riga,"_");
str = strtok(NULL,"_");
}


Praticamente prelevo una riga dal file f e la controllo. Devo estrapolare una parola da questa riga scritta_in_questo_formato . Mi serve la seconda parola quindi non occorre che faccia il ciclo (con questo codice infatti in str e' memorizzata la seconda parola.
Ora il problema e' che anche riga e' modificata!! riga e' uguale a str!!!! (perche' -penso- il puntatore si e' spostato).
Come faccio a trovare la seconda parola e memorizzarla in str senza stravolgere anche riga (che mi riserve dopo?)
Ho provato a fare

temp = riga; con temp dichiarata all'inizio come char *. Solo che non funziona neppure in questo modo, mi da sia riga sia temp uguali alla seconda parola della frase... Come devo fare!?
Ho provato *temp = *riga ma con un risultato diverso ancora.

Samuele_70
14-01-2008, 19:29
Originariamente inviato da sparkling
...
Come faccio a trovare la seconda parola e memorizzarla in str senza stravolgere anche riga (che mi riserve dopo?)
Ho provato a fare

temp = riga; con temp dichiarata all'inizio come char *. Solo che non funziona neppure in questo modo, mi da sia riga sia temp uguali alla seconda parola della frase... Come devo fare!?
Ho provato *temp = *riga ma con un risultato diverso ancora.
La strtock purtroppo modifica la stringa che gli passi, ogni volta che la richiami
sostituisce con un terminatore ('\0') la prima occorrenza dei caratteri cercati.
Crea una copia temporanea della stringa ed usa quella.

sparkling
15-01-2008, 13:25
Grazie mille!!!
Sono riuscita a risolvere il problema..! :D
Pensavo che spostasse il puntatore semplicemente, non che modificasse direttamente la stringa e i caratteri..!!

Loading