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