projman/hlp/fr/tcl/scan.htm

67 lines
9.4 KiB
HTML
Raw Normal View History

2015-10-19 13:27:31 +03:00
<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>scan&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div> <br>
<div ALIGN="LEFT" style="margin-left: 51px;">scan <20> Analyse une cha<68>ne en utilisant des sp<73>cificateurs de conversion dans le style de sscanf
</div> <br>
<div><b>SYNTAXE</b></div> <br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>scan </b><i>string format </i>?<i>varName varName ...</i>?
</div> <br>
<div><b>INTRODUCTION</b></div> <br>
<div ALIGN="LEFT" style="margin-left: 51px;">Cette commande analyse les champs <20> partir d'une cha<68>ne d'entr<74>e de la m<>me fa<66>on que la fonction ANSI C <b>sscanf</b> et retourne un compte du nombre de conversions effectu<74>es, ou -1 si la fin de la cha<68>ne d'entr<74>e est atteinte avant qu'une conversion ait <20>t<EFBFBD> effectu<74>e <i>String</i> donne l'entr<74>e a analyser et <i>format</i> indique comment l'analyser, en utilisant les sp<73>cificateurs de conversions <b>%</b> comme dans <b>sscanf</b>. Chaque <i>varName</i> donne le nom d'une variable; quand un champ est scann<6E> <20> partir de <i>string</i> le r<>sultat est converti en une cha<68>ne et assign<67> <20> la variable correspondante. Si aucunes variables <i>varName</i> ne sont sp<73>cifi<66>es, alors <b>scan</b> fonctionne d'une mani<6E>re lin<69>aire, retournant les donn<6E>es qui seraient autrement stock<63>es dans les variables comme une liste. Dans le cas lin<69>aire, une cha<68>ne vide est renvoy<6F>e quand la fin de la cha<68>ne d'entr<74>e est atteinte avant qu'une conversion ait <20>t<EFBFBD> effectu<74>e
</div><br>
<div><b>DETAILS SUR LE SCANNING</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>Scan</b> op<6F>re en scannant <i>string</i> et <i>format</i> ensemble. Si le caract<63>re suivant dans <i>format</i> est un espace ou une tabulation alors il correspond <20> un nombre quelconque d'espaces dans <i>string</i> (incluant z<>ro). Autrement, si ce n'est pas un caract<63>re <b>%</b> alors il doit correspondre au caract<63>re suivant de <i>string</i>. Quand un <b>%</b> est rencontr<74>e dans <i>format</i>, il indique le d<>but d'un sp<73>cificateur de conversion. Un sp<73>cificateur de conversion contient jusqu'a quatre champs apr<70>s le <b>%</b>: une <A HREF="24.htm"><b>*</b></A>, indique que la valeur convertie est <20>cart<72>e&nbsp; au lieu d'<27>tre assign<67>e <20> une variable; un sp<73>cificateur de position XPG3; un nombre indiquant une largeur de champ maximum; et un caract<63>re de conversion. Tous ces champs sont optionnels except<70> le caract<63>re de conversion. Les champs pr<70>sents doivent apparaitre dans l'ordre indiqu<71> plus haut. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Quand <b>scan</b> trouve un sp<73>cificateur de conversion dans <i>format</i>, il saute en premier tout espace dans <i>string</i> (<28> moins que le sp<73>cificateur soit <b>&#91;</b> ou <b>c</b>). Ensuite il convertit les caract<63>res d'entr<74>e suivants en accord avec le&nbsp; sp<73>cificateur de conversion et range le r<>sultat dans la variable d<>sign<67>e par l'argument suivant <20> <b>scan</b>. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si le <b>%</b> est suivi par un nombre d<>cimal et un <b>&#36;</b>, comme dans &quot;<b>%2&#36;d</b>&quot;, alors la variable <20> utiliser n'est pas extraite de l'argument suivant. Contrairement, elle est extraite de l'argument indiqu<71> par le nombre, where 1 corresponds <20> la premi<6D>re <i>varName</i>. Si il y a un quelconque sp<73>cificateur de position dans <i>format</i> alors tous les sp<73>cificateurs doivent <20>tre positionnels. Toutes les <i>varName</i> sur la liste d'arguments doivent correspondre exactement <20> un sp<73>cificateur de conversion ou une erreur est g<>n<EFBFBD>r<EFBFBD>e, ou dans le cas lin<69>aire, toute position peut <20>tre sp<73>cifi<66>e au moins une fois et les positions vides seront remplies avec des cha<68>nes vides. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Les caract<63>res de conversions suivants sont support<72>s:
<DL>
<DT><b>d</b></DT><DD>Le champ d'entr<74>e doit <20>tre un entier d<>cimal. Il est lu et la valeur est stock<63>e dans la variable comme cha<68>ne d<>cimale.
</DD>
<DT><br><b>o</b>
</DT><DD>Le champ d'entr<74>e doit <20>tre un entier octal. Il est lu et la valeur est stock<63>e dans la variable comme cha<68>ne d<>cimale.
</DD>
<DT><br><b>x</b>
</DT><DD>Le champ d'entr<74>e doit <20>tre un entier hexad<61>cimal. Il est lu et la valeur est stock<63>e dans la variable comme cha<68>ne d<>cimale.
</DD>
<DT><br><b>u</b>
</DT><DD>Le champ d'entr<74>e doit <20>tre un entier d<>cimal. La valeur est stock<63>e dans la variable comme cha<68>ne enti<74>re d<>cimale non sign<67>e.
</DD>
<DT><br><b>i</b>
</DT><DD>Le champ d'entr<74>e doit <20>tre un entier La base (ex. d<>cimale, octal, ou hexad<61>cimal) est d<>termin<69>e de la m<>me fa<66>on que d<>crite dans <A HREF="107.htm"><b>expr</b></A>. La valeur est stock<63>e dans la variable comme cha<68>ne d<>cimale.
</DD>
<DT><br><b>c</b>
</DT><DD>Un seul caract<63>re est lu et sa valeur binaire est stock<63>e dans la variable comme cha<68>ne d<>cimale. L'espace initial n'est pas saut<75> dans ce cas, donc le champ d'entr<74>e peut <20>tre un espace. Cette conversion est diff<66>rente du standard ANSI dans lequel le champ d'entr<74>e consiste toujours en un simple caract<63>re et ou aucune largeur de champ ne peut <20>tre sp<73>cifi<66>e.
</DD>
<DT><br><b>s</b>
</DT><DD>Le champ d'entr<74>e consiste en tous les caract<63>res jusqu'a l'espace suivant; les caract<63>res sont copi<70>s dans la variable.
</DD>
<DT><br><b>e</b> ou <b>f</b> ou <b>g</b>
</DT><DD>Le champ d'entr<74>e doit <20>tre un nombre <20> virgule flottante consistant&nbsp; d'un signe optionnel, une cha<68>ne de chiffres d<>cimaux pouvant contenir un point d<>cimal, et un exposant optionnel consistant&nbsp; d'un <b>e</b> ou <b>E</b> suivi par un signe optionnel et une cha<68>ne de chiffres d<>cimaux. Il est lu et stock<63> dans la variable comme une cha<68>ne flottante.
</DD>
<DT><br><b>&#91;</b><i>chars</i><b>]</b>
</DT><DD>Le champ d'entr<74>e consiste en un nombre quelconque de caract<63>res dans&nbsp; <i>chars</i>. La cha<68>ne correspondante est stock<63>e dans la variable. Si le premier caract<63>re entre crochets est un <b>]</b> alors il est trait<69> comme faisant partie de <i>chars</i> plut<75>t que le crochet fermant l'ensemble. Si <i>chars</i> contient une s<>quence de la forme <i>a</i><b>-</b><i>z</i> alors tout caract<63>re entre <i>a</i> et <i>z</i> (inclus) correspondra. Si le premier ou dernier caract<63>re entre crochets est un <b>-</b>, alors il est trait<69> comme faisant partie de <i>chars</i> plut<75>t que d'indiquer un intervalle.
</DD>
<DT><br><b>&#91;^</b><i>chars</i><b>]</b>
</DT><DD>Le champ d'entr<74>e consiste en un nombre quelconque de caract<63>res non inclus dans <i>chars</i>. La cha<68>ne correspondante est stock<63>e dans la variable. Si le caract<63>re suivant imm<6D>diatement le <b>^</b> est un <b>]</b> alors il est&nbsp; trait<69> comme partie de l'ensemble plut<75>t que le crochet fermant l'ensemble. Si <i>chars</i> contient une s<>quence de la forme <i>a</i><b>-</b><i>z</i> alors tout caract<63>re entre <i>a</i> et <i>z</i> (inclus) sera exclu de l'ensemble. Si le premier ou le dernier caract<63>re entre crochets est un <b>-</b>, alors il est trait<69> comme faisant partie de <i>chars</i> plut<75>t que d'indiquer un intervalle.
</DD>
<DT><br><b>n</b>
</DT><DD>Aucune entr<74>e n'est utilis<69>e de la cha<68>ne d'entr<74>e. Par contre, le nombre total de caract<63>res scann<6E>s de la cha<68>ne d'entr<74>e est stock<63> dans la variable.
</DD>
</DL>
</div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Le nombre de caract<63>res lus de l'entr<74>e pour conversion est le plus grand nombre qui a un sens pour cette conversion (ex. le plus grand nombre de chiffres d<>cimaux possibles pour <b>%d</b>, le plus grand nombre de chiffres octaux possibles pour <b>%o</b>, et ainsi de suite). Le champ d'entr<74>e pour une conversion donn<6E>e se termine soit quand un espace est rencontr<74> ou quand la largeur maximum de champ a <20>t<EFBFBD> atteinte, suivant lequel est rencontr<74> en premier. Si une <b>*</b> est pr<70>sente dans le sp<73>cificateur de conversion alors aucune variable n'est assign<67>e et l'argument suivant n'est pas utilis<69> </div><br>
<div><b>DIFFERENCES AVEC SSCANF ANSI</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Le comportement de la commande <b>scan</b> est le m<>me que celui de la fonction ANSI C <b>sscanf</b> except<70> les diff<66>rences suivantes: </div>
<div ALIGN="LEFT" style="margin-left: 102px;">&#91;1]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Le sp<73>cificateur de conversion <b>%p</b> n'est pas support<72>. </div>
<div ALIGN="LEFT" style="margin-left: 102px;">&#91;2]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Pour les conversions <b>%c</b> une seule valeur caract<63>re est convertie en cha<68>ne d<>cimale, qui est alors assign<67>e <20> la correspondante <i>varName</i>; aucune largeur de champ ne peut <20>tre sp<73>cifi<66>e pour cette conversion. </div>
<div ALIGN="LEFT" style="margin-left: 102px;">&#91;3]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Les modificateurs <b>l</b>, <b>h</b>, et <b>L</b> sont ignor<6F>s;&nbsp; les valeurs enti<74>res sont toujours converties comme s'il n'y avait pas de modificateur pr<70>sent et les valeurs r<>elles sont toujours converties comme si le modificateur <b>l</b> etait pr<70>sent (ex. le type <b>double</b> est utilis<69> pour la repr<70>sentation interne). </div>
<div ALIGN="LEFT" style="margin-left: 102px;">&#91;4]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Si la fin de la cha<68>ne d'entr<74>e est atteinte avant que quelconque conversion ait <20>t<EFBFBD> effectu<74>e et qu'aucune variable n'ait <20>t<EFBFBD> donn<6E>e, une cha<68>ne vide est renvoy<6F>e </div><br>
<div>Derni<EFBFBD>re r<>vision: 8.3</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="158.htm"><b>Pr<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="160.htm"><b>Suivant</b></A></div>
</BODY></HTML>