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

69 lines
10 KiB
HTML

<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>format&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;">format - Formate une chaîne dans le style de sprintf
</div> <br>
<div><b>SYNTAXE</b></div> <br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>format </b><i>formatString </i>?<i>arg arg ...</i>?
</div> <br>
<div><b>INTRODUCTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Cette commande génère une chaîne formatée de la même façon que la fonction C ANSI <b>sprintf</b> (elle utilise <b>sprintf</b> dans son implémentation). <i>FormatString</i> indique comment formater le résultat, en utilisant des spécificateurs de conversion <b>%</b> comme in <b>sprintf</b>, et les arguments supplémentaires, s'ils existent, fournissent les valeurs à substituer dans le résultat. La valeur de retour de <b>format</b> est la chaîne formatée <br>
</div> <br>
<div><b>DETAILS SUR LE FORMATAGE</b></div> <br>
<div ALIGN="LEFT" style="margin-left: 51px;">La commande opère en scannant <i>formatString</i> de gauche à droite Chaque caractère de la chaîne format est ajouté à la chaîne resultante à moins que ce soit un signe pourcentage. Si le caractère est un <b>%</b> alors il n'est pas copié dans la chaîne resultante. Par contre, les caractères suivants le caractère <b>%</b> sont traités comme un spécificateur de conversion. Le spécificateur de conversion contrôle la conversion des <i>arg</i> suivant en un format particulier et le résultat est ajouté à la chaîne resultante à la place du spécificateur de conversion. Si il y a plusieurs spécificateurs de conversion dans la chaîne format, alors chacun d'entre eux contrôle la conversion d'un <i>arg</i> supplémentaire. Les commande <b>format</b> doit avoir assez d'<i>arg</i>s pour satisfaire tous les spécificateurs de conversion de <i>formatString</i>. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Chaque spécificateur de conversion peut contenir jusqu'a six parties différentes: un spécificateur de position XPG3, un ensemble de flags, une largeur de champ minimum, une précision, un modificateur de longueur, et un caractère de conversion. N'importe quel de ces champs peut être omis excepté le caractère de conversion. Les champs présents doivent apparaitre dans l'ordre donné plus haut. Le paragraphe ci-dessous décrit chacun de ces champs. </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 valeur à convertir n'est pas extraite du suivant argument. Par contre, elle est extraite de l'argument indiqué par les nombre, où 1.htm corresponds au premier <i>arg</i>. Si le spécificateur de conversion exige plusieurs arguments à cause de caractères <A HREF="24.htm"><b>*</b></A> dans le spécificateur alors les arguments successifs sont utilisés, en commençant par l'argument donné par le nombre. Ceci suit les conventions XPG3.htm pour les spécificateurs de position. Si il y a des spécificateurs de position dans <i>formatString</i> alors tous spécificateurs doivent être positionnels. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">La seconde partie d'un spécificateur de conversion peut contenir un des caractères flag suivants, dans n'importe quel ordre:
<DL>
<DT><br><b>-</b></DT><DD>Spécifie que l'argument converti sera justifié à gauche dans son champ (les nombres sont normalement justifiés à droite avec des espaces en tête si besoin).
</DD>
<DT><br><b>+</b></DT><DD>Spécifie qu'un nombre doit toujours être affiché avec un signe, même si positif.
</DD>
<DT><br><i>space</i></DT><DD>Spécifie qu'un espace sera ajouté au début du nombre si le premier caractère n'est pas un signe.
</DD>
<DT><br><b>0</b></DT><DD>Spécifie que les nombre seront remplis à gauche avec des zéros au lieu des espaces.
</DD>
<DT><br><b>#</b></DT><DD>Demande une forme de sortie alternative. Pour les conversions <b>o</b> et <b>O</b> ceci garantit que le premier digit sera toujours <b>0</b>. Pour conversions<b> x</b> ou <b>X</b>, <b>0x</b> ou <b>0X</b> (respectivement) sera ajouté au début du résultat à moins que ce soit zéro. Pour toutes conversions flottantes (<b>e</b>, <b>E</b>, <b>f</b>, <b>g</b>, et <b>G</b>) ceci garantit que le résultat a toujours un point (ou le séparateur décimal local ? NDT). Pour les conversions <b>g</b> et <b>G</b> ceci spécifie que les zéros à la fin ne seront pas enlevés.
</DD>
</DL>
</div>
<div ALIGN="LEFT" style="margin-left: 51px;">La troisième partie d'un spécificateur de conversion est un nombre donnant une largeur de champ minimum pour cette conversion. Il est typiquement utilisé pour tracer des colonnes dans les sorties tabulaires. Si l'argument converti contient moins de caractères que la largeur de champ minimum alors il sera rempli pour atteindre la taille de la largeur de champ minimum. Le remplissage se produit normalement en ajoutant des espaces à gauche de l'argument converti, mais les flags <b>0</b> et <b>-</b> peuvent être employés pour spécifier le remplissage avec zéros à gauche ou avec des espaces à droite, respectivement. Si la largeur de champ minimum est spécifiée comme <b>*</b> plutôt qu'un nombre, alors l'argument suivant la commande <b>format</b> détermine la largeur de champ minimum; ce doit être une chaîne numérique. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">La quatrième partie d'un spécificateur de conversion est la précision, qui consiste en un point suivi d'un nombre. Le nombre est utilisé de plusieurs façons pour des conversions différentes. Pour les conversions <b>e</b>, <b>E</b>, et <b>f</b> spécifient le nombre de chiffres qui apparaissent à droite du séparateur décimal. Pour les conversions <b>g</b> et <b>G</b> il spécifie le nombre total de chiffres qui apparaissent, incluant ceux des deux cotés du séparateur décimal (néanmoins, les zéros après le séparateur décimal seront toujours omis à moins que le flag <b>#</b> ait été spécifié). Pour les conversions entières, il spécifie une nombre minimum de chiffres à afficher (des zéros en tête seront ajoutés si nécessaire). Pour les conversions <b>s</b> il spécifie le nombre maximum de caractères à afficher; si la chaîne est plus longue les caractères en excedant seront omis. Si la précision est spécifiée avec <b>*</b> plutôt qu'un nombre alors l'argument suivant la commande <b>format</b> détermine la précision; il doit être une chaîne numérique. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">La cinquième partie d'un spécificateur de conversion est un modificateur de longueur, qui doit être <b>h</b> ou <b>l</b>. Si c'est <b>h</b> il spécifie que la valeur numérique sera tronquée en une valeur 16-bit avant conversion. Cette option est rarement utile. Le modificateur <b>l</b> est ignoré. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">La dernière chose dans un spécificateur de conversion est un caractère alphabétique qui détermine quelle sorte de conversion effectuer. Les caractère de conversions suivants sont couramment supportés:
<DL>
<DT><br><b>d</b></DT><DD>Convertit un entier en chaîne décimale signée. </DD>
<DT><br><b>u</b></DT><DD>Convertit un entier en chaîne décimale non signée. </DD>
<DT><br><b>i</b></DT><DD>Convertit un entier en chaîne décimale signée; l'entier peut soit être décimal, octal (avec <b>0 </b>en<b> </b>tête) ou en hexadécimal (avec <b>0x</b>en tête). </DD>
<DT><br><b>o</b></DT><DD>Convertit un entier en chaîne octale non signée.</DD>
<DT><br><b>x</b> ou <b>X</b></DT><DD>Convertit un entier en chaîne hexadécimale non signée, en utilisant les chiffres &quot;0123456789abcdef&quot; pour <b>x</b> et &quot;0123456789ABCDEF&quot; pour <b>X</b>).
</DD>
<DT><br><b>c</b></DT><DD>Convertit un entier en le caractère Unicode qu'il représente.
</DD>
<DT><br><b>s</b></DT><DD>Pas de conversion; insère juste une chaîne. </DD>
<DT><br><b>f</b></DT><DD>Convertit un nombre flottant en chaîne décimale signée de la forme <i>xx.yyy</i>, où le nombre de <i>y</i> est déterminé par la précision (par défaut: 6). Si la précision est 0 alors aucun séparateur décimal n'est affiché.
</DD>
<DT><br><b>e</b> ou <b>e</b></DT><DD>Convertit un nombre flottant en notation scientifique de la forme <i>x.yyy</i><b>e&plusmn; </b><i>zz</i>, où le nombre de <i>y</i>'s est déterminé par la précision (par défaut: 6). Si la précision est 0 alors aucun séparateur décimal n'est affiché. Si la forme <b>E</b> est utilisée alors <b>E</b> est affiché au lieu de <b>e</b>.
</DD>
<DT><br><b>g</b> ou <b>G</b></DT><DD>Si l'exposant inférieur à -4 ou supérieur à ou égal à la précision, alors convertit nombre flottant comme pour <b>%e</b> ou <b>%E</b>. Autrement convertit comme pour <b>%f</b>. les zéros à la fin et le séparateur décimal sont omis.
</DD>
<DT><br><b>%</b></DT><DD>Pas de conversion; insère juste <b>%</b>. </DD>
</DL>
</div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Pour les conversions numériques l'argument converti doit être un entier ou une chaîne flottante; format convertit l'argument en binaire et alors le convertit en une chaîne en accord avec le spécificateur de conversion
</div><br>
<div><b>DIFFERENCES AVEC ANSI SPRINTF</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Le comportement de la commande <i>format</i> est le même que le fonction ANSI C <b>sprintf</b> excepté les différences suivantes: </div><br>
<div ALIGN="LEFT" style="margin-left: 80px;">&#91;1]&nbsp;&nbsp;les spécificateurs <b>%p</b> et <b>%n</b> ne sont pas couramment supportés. </div><br>
<div ALIGN="LEFT" style="margin-left: 80px;">&#91;2]&nbsp;&nbsp;Pour les conversions <b>%c</b> l'argument doit être une chaîne décimale, qui sera alors convertie en la valeur caractère correspondante. </div><br>
<div ALIGN="LEFT" style="margin-left: 80px;">&#91;3]&nbsp;&nbsp;Le modificateur <b>l</b> est ignoré; les valeurs entières sont toujours converties comme si'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). Si le modificateur <b>h</b> est spécifié alors les valeur entières sont tronquées en <b>short</b> avant conversion </div><br>
<div>Dernière révision: 8.1</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="116.htm"><b>Précédent</b></A>&nbsp;&nbsp;<A HREF="118.htm"><b>Suivant</b></A>
</div>
</BODY></HTML>