PDA

Visualizza la versione completa : Chiarimento funzione strtok in C


Unitek44
06-12-2016, 09:20
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!:)

oregon
06-12-2016, 10:08
Non ho capito bene ... vuoi sapere se si può fare e l'hai già fatto?

Unitek44
06-12-2016, 11:05
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 :)

oregon
06-12-2016, 11:59
Continuo a non capire ...

Dalla prima frase ottieni 3 token, dalla seconda 2 ... devi confrontare 3 con 2 ... quindi?

Unitek44
06-12-2016, 12:02
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?

oregon
06-12-2016, 12:04
Scusa, ma hai detto di avere scritto il codice che tira fuori i token o no?

Unitek44
06-12-2016, 17:11
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.




#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?

oregon
07-12-2016, 00:06
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

Loading