cs_AmK
Messages postés368Date d'inscriptionjeudi 13 mars 2003StatutMembreDernière intervention27 janvier 2010
-
4 juin 2003 à 19:08
Topnotch
Messages postés22Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention22 août 2008
-
14 juil. 2008 à 15:22
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
Topnotch
Messages postés22Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention22 août 2008 14 juil. 2008 à 15:22
Simple et bien expliqué
yanlou
Messages postés119Date d'inscriptiondimanche 30 septembre 2007StatutMembreDernière intervention11 août 2010 4 juil. 2008 à 10:57
merçi pour cette exemple ça ma bien aidée
bzrd
Messages postés20Date d'inscriptionvendredi 13 octobre 2006StatutMembreDernière intervention25 mars 201136 13 nov. 2006 à 15:56
Avantages du strtok :
- on peut mettre une liste de séparateurs, donc c'est plus facile à gérer qu'un while.
- on peut changer la liste de séparateurs entre deux appels.
Gros inconvénients :
- ça utilise une globale pour conserver le pointeur entre 2 appels, donc si une fonction fait une boucle sur un strtok et qu'elle en appelle une autre qui utilise aussi strtok, au retour on a perdu la première boucle (pas réentrant du tout !)
- la chaîne en entrée est modifiée (d'où le strdup de l'exemple fourni je suppose -- il manque d'ailleurs le free correspondant).
Globalement :
 connaître, mais à utiliser avec parcimonie !
jerome86600
Messages postés36Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention13 juillet 2006 18 juin 2005 à 18:13
comment on fait si on veut mettre le mot dans une variable au lieu de l imprimer?
cs_Nebula
Messages postés787Date d'inscriptionsamedi 8 juin 2002StatutMembreDernière intervention 7 juin 20072 13 juin 2005 à 04:14
Perso je préfère le while aussi, au moins on sait où on va. Après chacun est libre de coder comme il le veut, m'enfin.
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 13 juin 2005 à 00:48
jamais vu l'intérêt de ce strtok, on ballade 2 pointeurs et on a la même chose sans se poser de questions et surtout sans variable implicite qu'on ne controle pas. C'est vraiment le genre de fonction inutile et limite nuisible, tout juste bon pour celui qui arrive de VB, c'est mon avis et je le partage, pas vous ?
cs_Nebula
Messages postés787Date d'inscriptionsamedi 8 juin 2002StatutMembreDernière intervention 7 juin 20072 13 juin 2005 à 00:14
En effet. Et sous linux et autres *nix, il faut utiliser strtok_r (les fonctions *_r sont compatibles avec le multithreading).
BlackGoddess
Messages postés338Date d'inscriptionjeudi 22 août 2002StatutMembreDernière intervention14 juin 2005 13 juin 2005 à 00:06
pour le multithreading, apparement ca deprendrait de l'implémentation de la lib c ... le crt de vs7 crée un ptr pour strtok par thread (qd on compile en mt bien sur) donc pas de soucis :p
gogo.prog
Messages postés5Date d'inscriptionlundi 21 février 2000StatutMembreDernière intervention11 mai 2003 19 juin 2003 à 10:29
oops jai rien dit, le bug venait d'autre part :)
ton code marche parfaitement :)
gogo.prog
Messages postés5Date d'inscriptionlundi 21 février 2000StatutMembreDernière intervention11 mai 2003 19 juin 2003 à 10:25
chez moi cela decoupe bien la chaine, mais apres avoir tout incrit, mon prog plante. jai devc++ beta 5
Trinita16
Messages postés199Date d'inscriptionlundi 22 juillet 2002StatutMembreDernière intervention14 juin 2006 5 juin 2003 à 17:38
Merci Nebula, je vais regarder ça.
Mais pour le moment je n'ai pas eu de problème avec la fonction!
Trinita
cs_Nebula
Messages postés787Date d'inscriptionsamedi 8 juin 2002StatutMembreDernière intervention 7 juin 20072 5 juin 2003 à 08:36
tite note sur laquelle je me suis deja fait avoir : faut pas l'utiliser avec plusieurs threads, sinon strtok s'emmele les pédales (ce qui est logique vu son fonctionnement, mais je l'ai vu qu'après coup...)
=> parse manuel obligatoire, à moins qu'il existe une autre solution ?
MoDDiB
Messages postés546Date d'inscriptionmardi 26 novembre 2002StatutMembreDernière intervention 4 mai 20071 4 juin 2003 à 21:24
merci ca me parait sympa ^^
cs_AmK
Messages postés368Date d'inscriptionjeudi 13 mars 2003StatutMembreDernière intervention27 janvier 20101 4 juin 2003 à 19:08
tiens je connaissais pas ça :)
maitenant je la connais grace a toi ;)
14 juil. 2008 à 15:22
4 juil. 2008 à 10:57
13 nov. 2006 à 15:56
- on peut mettre une liste de séparateurs, donc c'est plus facile à gérer qu'un while.
- on peut changer la liste de séparateurs entre deux appels.
Gros inconvénients :
- ça utilise une globale pour conserver le pointeur entre 2 appels, donc si une fonction fait une boucle sur un strtok et qu'elle en appelle une autre qui utilise aussi strtok, au retour on a perdu la première boucle (pas réentrant du tout !)
- la chaîne en entrée est modifiée (d'où le strdup de l'exemple fourni je suppose -- il manque d'ailleurs le free correspondant).
Globalement :
 connaître, mais à utiliser avec parcimonie !
18 juin 2005 à 18:13
13 juin 2005 à 04:14
13 juin 2005 à 00:48
13 juin 2005 à 00:14
13 juin 2005 à 00:06
19 juin 2003 à 10:29
ton code marche parfaitement :)
19 juin 2003 à 10:25
5 juin 2003 à 17:38
Mais pour le moment je n'ai pas eu de problème avec la fonction!
Trinita
5 juin 2003 à 08:36
=> parse manuel obligatoire, à moins qu'il existe une autre solution ?
4 juin 2003 à 21:24
4 juin 2003 à 19:08
maitenant je la connais grace a toi ;)