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

    Chiarimento funzione strtok in C

    Ciao a tutti,
    Per prima cosa ringrazio in anticipo coloro che cercheranno di aiutarmi per il dubbio che andrò ad esporvi.
    Necessito di verificare se due stringhe sono uguali per numero di elementi al loro interno, esclusi gli spazi, in un programma.
    Per fare un esempio: " buona giornata" e "buong giorno" dovrebbero essere uguali per numero di argomenti inseriti (infatti entrambi hanno due parole nonostente i tanti spazi nella seconda stringa); per fare ciò ho pensato di utilizzare la funzione strtok che "crea" dei token suddividendo la stringa quando incontra un cosiddetto carattere delimitatore( spazi, virgole ecc...);
    La mia domanda è: è possibile confrontare il numero degli elementi che vengono "creati" da strtok (ovvero i token) tra due stringhe differenti?

    Grazie mille

    P.S. già ho provato la funzione strtok e sono riuscito a creare i token di una stringa che ho inserito...quindi per questa parte di codice è tutto ok!

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Non ho capito bene ... vuoi sapere se si può fare e l'hai già fatto?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Non ho capito bene ... vuoi sapere se si può fare e l'hai già fatto?
    No non riesco a capire se posso confrontare il numero di elementi di due stringhe su cui ho utilizzato la funzione strtok

    Ad esempio (ciao a tutti) (buona giornata)

    I token del primo sono:
    ciao
    a
    tutti

    Quelli del secondo sono:
    buona
    giornata

    Ma il numero è diverso... infatti il primo ne ha 3 mentre il secondo ne ha 2...come faccio a confrontare il numero di elementi?
    Non so se così mi sono spiegato meglio
    Ultima modifica di Unitek44; 06-12-2016 a 12:07

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Continuo a non capire ...

    Dalla prima frase ottieni 3 token, dalla seconda 2 ... devi confrontare 3 con 2 ... quindi?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Continuo a non capire ...

    Dalla prima frase ottieni 3 token, dalla seconda 2 ... devi confrontare 3 con 2 ... quindi?
    Esatto! come posso far verificare al programma se il numero di token della prima frase è identico a quello della seconda?

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Scusa, ma hai detto di avere scritto il codice che tira fuori i token o no?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Scusa, ma hai detto di avere scritto il codice che tira fuori i token o no?
    esatto, ho prima studiato la funzione dal libro, per capirne meglio l'utilizzo e poi ho seguito un esempio;
    il programma gira infatti!
    mi dice che la stringa 1 dopo che viene usata la funzione strtok diventa:
    ciao
    a
    tutti
    come
    state?
    proprio perchè viene suddivisa in token, stessa cosa per la stringa 2.


    codice:
    #include <stdio.h>
    #include <string.h>
    
    
        char string1[] = "ciao a tutti come state?";
        char string2[] = "My test is here ";
    
    
    
    
    
    
    
    
        printf("La stringa1 è: %s\n", string1);
    
    
        printf("La stringa2 è: %s\n", string2);
    
    
    
    
        printf("%s\n%s\n\n%s\n",
               "The string to be tokenized is:", string1,
               "The tokens are:");
    
    
        char *tokenPtr1 = strtok(string1, " "  );
        while (tokenPtr1 != NULL)
        {
            printf("%s\n", tokenPtr1);
            tokenPtr1 = strtok(NULL, " " );
        }
    
    
    
    
        printf("%s\n%s\n\n%s\n",
               "\nThe string to be tokenized is:", string2,
               "The tokens are:");
    
    
        char *tokenPtr2 = strtok(string2,  " " );
        while (tokenPtr2 != NULL)
        {
            printf("%s\n",tokenPtr2);
            tokenPtr2 = strtok(NULL, " "  );
        }
    
    
    }

    Io a questo punto mi domando se sia possibile confrontare il numero di elementi che vengono fuori dalle due stringhe dopo la funzione strtok...
    Quale funzione potrei usare per far leggere al programma che la stringa1 ha "più parole" rispetto alla stringa 2?
    Ultima modifica di MItaly; 08-12-2016 a 00:01 Motivo: Tag CODE

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Nessuna funzione ...

    Devi semplicemente usare due variabili contatori, le inizializzi a zero e le incrementi nei due cicli.

    Alla fine avrai il numero di parole e basterà confrontare le due variabili con una if
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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