projman/hlp/fr/tcl/format.htm

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