(Courriels de diversion: <ragaillardiront@furetais-gommerions.com> <mutilons@degouterons-digue.com> <disqualifions@matraquerent-debile.com> <enflammeraient@pardonnable-locomotives.com> <ahuriront@virtualite-inversible.com> <indique@dirigeable-nuis.com> <debranche@marine-lacera.com> <repartons@diffamerent-atermoyiez.com> <reserveraient@releguerons-remploierions.com> <fausserions@rigoriste-imprevoyance.com> )


>>>>> "LF" == FOUCHER  <FOUCHER@aneto.gch.iut-tlse3.fr> writes:
  LF> J'ai du mal à comprendre la fonction C strtok de la bibliotheque
  LF> standard. Si quelqu'un pouvait m'expliquer ....

Pour compléter la réponse de Eric Grandjean: l'interface de strtok() est
particulièrement mal foutue:

 * strtok() modifie son premier argument, donc il faut en faire une
   copie préalable si l'argument est partagé par d'autres
   fonctions;

 * strtok() n'est pas réentrant, donc à ne pas utiliser dans les
   handlers de signaux;

 * strtok() n'est pas thread safe¹, il faut utiliser strtok_r() à la
   place. 

Bien entendu, inutile de vous dire que dans les langages bien foutus
ces problèmes n'existent pas ;-) C'est l'exemple parfait de l'approche
"Worse is Better"² (en passant, j'ai fait une tentative de traduction
de cet excellent papier, si quelqu'un voulait bien corriger mon
français, on le rajouterai au Projet Documentation CULTe).


¹ Tentative de traduction en français: ne peut pas être utilisé avec
  sécurité/innocuité dans des programmes à fils multiples. Où il
  faudrait préciser qu'on parle de fils d'exécution (sens objet long
  et mince) et non de processus fils (sens parenté). C'est vachement
  bien l'anglais ...

² <URL:http://www.jwz.org/worse-is-better.html>
  
-- 
 SIGTHTBABW: a signal sent from Unix to its programmers at random
 intervals to make them remember that There Has To Be A Better Way

 _______________________________________________________________________
  Le CULTe sur le ouebe: http://savage.iut-blagnac.fr/