projman/hlp/fr/tcl/scan.htm
2015-10-19 14:27:31 +04:00

67 lines
9.4 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<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 Analyse une chaîne en utilisant des spé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 à partir d'une chaîne d'entrée de la même façon que la fonction ANSI C <b>sscanf</b> et retourne un compte du nombre de conversions effectuées, ou -1 si la fin de la chaîne d'entrée est atteinte avant qu'une conversion ait été effectuée <i>String</i> donne l'entrée a analyser et <i>format</i> indique comment l'analyser, en utilisant les spé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é à partir de <i>string</i> le résultat est converti en une chaîne et assigné à la variable correspondante. Si aucunes variables <i>varName</i> ne sont spécifiées, alors <b>scan</b> fonctionne d'une manière linéaire, retournant les données qui seraient autrement stockées dans les variables comme une liste. Dans le cas linéaire, une chaîne vide est renvoyée quand la fin de la chaîne d'entrée est atteinte avant qu'une conversion ait été effectuée
</div><br>
<div><b>DETAILS SUR LE SCANNING</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>Scan</b> opère en scannant <i>string</i> et <i>format</i> ensemble. Si le caractère suivant dans <i>format</i> est un espace ou une tabulation alors il correspond à un nombre quelconque d'espaces dans <i>string</i> (incluant zéro). Autrement, si ce n'est pas un caractère <b>%</b> alors il doit correspondre au caractère suivant de <i>string</i>. Quand un <b>%</b> est rencontrée dans <i>format</i>, il indique le début d'un spécificateur de conversion. Un spécificateur de conversion contient jusqu'a quatre champs après le <b>%</b>: une <A HREF="24.htm"><b>*</b></A>, indique que la valeur convertie est écartée&nbsp; au lieu d'être assignée à une variable; un spécificateur de position XPG3; un nombre indiquant une largeur de champ maximum; et un caractère de conversion. Tous ces champs sont optionnels excepté le caractère de conversion. Les champs présents doivent apparaitre dans l'ordre indiqué plus haut. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Quand <b>scan</b> trouve un spécificateur de conversion dans <i>format</i>, il saute en premier tout espace dans <i>string</i> (à moins que le spécificateur soit <b>&#91;</b> ou <b>c</b>). Ensuite il convertit les caractères d'entrée suivants en accord avec le&nbsp; spécificateur de conversion et range le résultat dans la variable désignée par l'argument suivant à <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 à utiliser n'est pas extraite de l'argument suivant. Contrairement, elle est extraite de l'argument indiqué par le nombre, where 1 corresponds à la première <i>varName</i>. Si il y a un quelconque spécificateur de position dans <i>format</i> alors tous les spécificateurs doivent être positionnels. Toutes les <i>varName</i> sur la liste d'arguments doivent correspondre exactement à un spécificateur de conversion ou une erreur est générée, ou dans le cas linéaire, toute position peut être spécifiée au moins une fois et les positions vides seront remplies avec des chaînes vides. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Les caractères de conversions suivants sont supportés:
<DL>
<DT><b>d</b></DT><DD>Le champ d'entrée doit être un entier décimal. Il est lu et la valeur est stockée dans la variable comme chaîne décimale.
</DD>
<DT><br><b>o</b>
</DT><DD>Le champ d'entrée doit être un entier octal. Il est lu et la valeur est stockée dans la variable comme chaîne décimale.
</DD>
<DT><br><b>x</b>
</DT><DD>Le champ d'entrée doit être un entier hexadécimal. Il est lu et la valeur est stockée dans la variable comme chaîne décimale.
</DD>
<DT><br><b>u</b>
</DT><DD>Le champ d'entrée doit être un entier décimal. La valeur est stockée dans la variable comme chaîne entière décimale non signée.
</DD>
<DT><br><b>i</b>
</DT><DD>Le champ d'entrée doit être un entier La base (ex. décimale, octal, ou hexadécimal) est déterminée de la même façon que décrite dans <A HREF="107.htm"><b>expr</b></A>. La valeur est stockée dans la variable comme chaîne décimale.
</DD>
<DT><br><b>c</b>
</DT><DD>Un seul caractère est lu et sa valeur binaire est stockée dans la variable comme chaîne décimale. L'espace initial n'est pas sauté dans ce cas, donc le champ d'entrée peut être un espace. Cette conversion est différente du standard ANSI dans lequel le champ d'entrée consiste toujours en un simple caractère et ou aucune largeur de champ ne peut être spécifiée.
</DD>
<DT><br><b>s</b>
</DT><DD>Le champ d'entrée consiste en tous les caractères jusqu'a l'espace suivant; les caractères sont copiés dans la variable.
</DD>
<DT><br><b>e</b> ou <b>f</b> ou <b>g</b>
</DT><DD>Le champ d'entrée doit être un nombre à virgule flottante consistant&nbsp; d'un signe optionnel, une chaî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îne de chiffres décimaux. Il est lu et stocké dans la variable comme une chaîne flottante.
</DD>
<DT><br><b>&#91;</b><i>chars</i><b>]</b>
</DT><DD>Le champ d'entrée consiste en un nombre quelconque de caractères dans&nbsp; <i>chars</i>. La chaîne correspondante est stockée dans la variable. Si le premier caractère entre crochets est un <b>]</b> alors il est traité comme faisant partie de <i>chars</i> plutô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ère entre <i>a</i> et <i>z</i> (inclus) correspondra. Si le premier ou dernier caractère entre crochets est un <b>-</b>, alors il est traité comme faisant partie de <i>chars</i> plutôt que d'indiquer un intervalle.
</DD>
<DT><br><b>&#91;^</b><i>chars</i><b>]</b>
</DT><DD>Le champ d'entrée consiste en un nombre quelconque de caractères non inclus dans <i>chars</i>. La chaîne correspondante est stockée dans la variable. Si le caractère suivant immédiatement le <b>^</b> est un <b>]</b> alors il est&nbsp; traité comme partie de l'ensemble plutô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ère entre <i>a</i> et <i>z</i> (inclus) sera exclu de l'ensemble. Si le premier ou le dernier caractère entre crochets est un <b>-</b>, alors il est traité comme faisant partie de <i>chars</i> plutôt que d'indiquer un intervalle.
</DD>
<DT><br><b>n</b>
</DT><DD>Aucune entrée n'est utilisée de la chaîne d'entrée. Par contre, le nombre total de caractères scannés de la chaîne d'entrée est stocké dans la variable.
</DD>
</DL>
</div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Le nombre de caractères lus de l'entré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ée pour une conversion donnée se termine soit quand un espace est rencontré ou quand la largeur maximum de champ a été atteinte, suivant lequel est rencontré en premier. Si une <b>*</b> est présente dans le spécificateur de conversion alors aucune variable n'est assignée et l'argument suivant n'est pas utilisé </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é les différences suivantes: </div>
<div ALIGN="LEFT" style="margin-left: 102px;">&#91;1]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Le spécificateur de conversion <b>%p</b> n'est pas supporté. </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ère est convertie en chaîne décimale, qui est alors assignée à la correspondante <i>varName</i>; aucune largeur de champ ne peut être spécifié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és;&nbsp; les valeurs entières sont toujours converties comme s'il n'y avait pas de modificateur présent et les valeurs réelles sont toujours converties comme si le modificateur <b>l</b> etait présent (ex. le type <b>double</b> est utilisé pour la représentation interne). </div>
<div ALIGN="LEFT" style="margin-left: 102px;">&#91;4]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Si la fin de la chaîne d'entrée est atteinte avant que quelconque conversion ait été effectuée et qu'aucune variable n'ait été donnée, une chaîne vide est renvoyée </div><br>
<div>Derniè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écédent</b></A>&nbsp;&nbsp;<A HREF="160.htm"><b>Suivant</b></A></div>
</BODY></HTML>