(Courriels de diversion: <theoriser@evincais-ragaillardiront.com> <furetais@gommerions-mutilons.com> <degouterons@digue-disqualifions.com> <matraquerent@debile-enflammeraient.com> <pardonnable@locomotives-ahuriront.com> <virtualite@inversible-indique.com> <dirigeable@nuis-debranche.com> <marine@lacera-repartons.com> <diffamerent@atermoyiez-reserveraient.com> <releguerons@remploierions-fausserions.com> )
Le 9 Fév, Eric Marsden écrit : > * strtok() n'est pas réentrant, donc à ne pas utiliser dans les > handlers de signaux; C'est pire que cela. strtok maintient un état interne global, donc on cherche (et on trouve !) les ennuis dès que l'on mélange deux utilisations imbriquées : char str1[] = "première chaîne"; char str2[] = "antenne 2"; for (p = strtok(str1, "e "); p != NULL; p = strtok(NULL, "e ")) for (q = strtok(str2, "n"); q != NULL; q = strtok(NULL, " ")) ... La deuxième boucle interfère avec la première. Cela paraît gros, vu comme cela, mais la deuxième utilisation peut être cachée dans une fonction appelée... De plus, si on termine une série de strtok avant que la fonction renvoie NULL, la chaîne de départ est amputée (strtok modifie la chaîne qu'on lui passe). Le 9 Fév, Eric Grandjean écrit : > soit la chaine question="ca fait quoi strtok"; > des appels consecutifs element=strtok(question," "); fera prendre a element les > valeurs suivantes "ca","fait","quoi","strtok" Pas tout à fait. Le premier appel à strtok sur une chaîne (pour la découper) prend en premier paramètre la chaîne en question (initialisation de l'état global de strtok). Les appels suivant prennent NULL en premier paramètre. element=strtok(question," "); /* element == "ca", question == "ca\0fait..." */ element=strtok(NULL," "); /* element == "fait", question == "ca fait\0quoi..." */ etc... element=strtok(question," "); /* element == "ca", question == "ca\0fait..." */ element=strtok(question," "); /* element == "ca", question == "ca\0fait..." ça bafouille... */ Le deuxième argument (liste des séparateurs) peut changer sans problème d'un appel à l'autre (y compris dans la même série). -- Marc Thirion | Toulouse, France Un Travail pour Chacun : http://www.multimania.com/untravailchacun/ _______________________________________________________________________ Le CULTe sur le ouebe: http://savage.iut-blagnac.fr/