(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/