Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [C] stringa troncata con strtok

    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:


    codice:
     
            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
    codice:
    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.
    Silvia C.

  2. #2

    Re: [C] stringa troncata con strtok

    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
    codice:
    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.
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  3. #3
    Grazie mille!!!
    Sono riuscita a risolvere il problema..!
    Pensavo che spostasse il puntatore semplicemente, non che modificasse direttamente la stringa e i caratteri..!!
    Silvia C.

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.