275 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			275 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 | ||
| <html>
 | ||
|   <head>
 | ||
|     <title>format</title>
 | ||
|   </head>
 | ||
| 
 | ||
|   <body>
 | ||
|     <h1>format</h1>
 | ||
|     <br>
 | ||
| 
 | ||
|     <p>Команда форматирует строку в стиле процедуры
 | ||
|       <strong>sprintf</strong>.</p>
 | ||
|     
 | ||
|     <h2><a name="format СИНТАНСИС"></a>СИНТАКСИС</h2>
 | ||
| 
 | ||
|     <pre>
 | ||
|       <strong>format</strong> <em>formatString</em> ?<em>arg</em> <em>arg</em>...?
 | ||
|     </pre>
 | ||
| 
 | ||
|     <h2><a name="format ВВЕДЕНИЕ"></a>ВВЕДЕНИЕ</h2>
 | ||
| 
 | ||
|     <p> Данная команда создает и возвращает программе форматированную
 | ||
|       строку так же, как это делает процедура ANSI C sprintf (эта
 | ||
|       процедура используется в реализации команды). Подобно
 | ||
|       <strong>sprintf</strong>, <strong>formatString</strong> указывает с помощью
 | ||
|       спецификаторов преобразований,как именно сформатировать
 | ||
|       результат, а возможные дополнительные аргументы предназначены
 | ||
|       для подстановки в результат.
 | ||
|     </p>
 | ||
| 
 | ||
|     <p> Команда немного отличается от <strong>sprintf</strong> в части отдельных
 | ||
|       спецификаторов и ключей.
 | ||
|     </p>
 | ||
| 
 | ||
|     <h2><a name="format ПРОЦЕСС"></a>ПРОЦЕСС ФОРМИРОВАНИЯ</h2>
 | ||
| 
 | ||
|     <p> Команда просматривает строку <em>formatString</em> слева
 | ||
|       направо. Все символы из строки непосредственно переносятся в
 | ||
|       результирующую строку, кроме символа <strong>%</strong> и следующих
 | ||
|       непосредственно за ним. Такая последовательность символов
 | ||
|       рассматривается как спецификатор преобразования. Этот
 | ||
|       спецификатор управляет преобразованием очередного аргумента
 | ||
|       <em>arg</em> в указанный формат, после чего тот добавляется к
 | ||
|       результирующей строке вместо соответствующего спецификатора.
 | ||
|       Если в строке <em>formatString</em> содержится несколько
 | ||
|       спецификаторов, каждый из них управляет преобразованием одного
 | ||
|       дополнительного аргумента. Число таких аргументов должно быть
 | ||
|       достаточным для всех спецификаторов в строке.
 | ||
|     </p>
 | ||
| 
 | ||
|     <p> Каждый из спецификаторов преобразования может содержать до
 | ||
|       шести различных частей: указатель позиции, набор флагов,
 | ||
|       минимальная ширина поля, точность, преобразователь длины и тип
 | ||
|       преобразования. Любые из полей, кроме типа преобразования, могут
 | ||
|       отсутствовать. Ниже обсуждаются соответствующие разделы
 | ||
|       спецификаторов.
 | ||
|     </p>
 | ||
|     
 | ||
|     <h2><a name="format УКАЗАТЕЛЬ ПОЗИЦИИ"></a>УКАЗАТЕЛЬ ПОЗИЦИИ</h2>
 | ||
| 
 | ||
|     <p> Если за символом <strong>%</strong> следуют целое число и знак <strong>$</strong>,
 | ||
|       как например в <strong>%2$d</strong>, то величина для преобразования
 | ||
|       берется не из следующего аргумента, а из аргумента, занимающего
 | ||
|       соответствующую позицию в списке (<strong>1</strong> соответствует первому
 | ||
|       аргументу <em>arg</em>). Если спецификатор преобразования требует
 | ||
|       нескольких аргументов (когда он содержит символ *), то
 | ||
|       используются последовательные аргументы, начиная с
 | ||
|       указанного. Если один из спецификаторов содержит указание
 | ||
|       позиции аргумента, то и все остальные спецификаторы должны его
 | ||
|       содержать.
 | ||
|     </p>
 | ||
|     
 | ||
|     <h2><a name="format ФЛАГИ ПРЕОБРАЗОВАНИЯ"></a>ФЛАГИ
 | ||
|       ПРЕОБРАЗОВАНИЯ</h2>
 | ||
| 
 | ||
|     <p> Второй раздел спецификатора может содержать в произвольном
 | ||
|       порядке любые флаги из перечисленных ниже.</p>
 | ||
| 
 | ||
|     <table>
 | ||
|       <tbody>
 | ||
| 	<tr>
 | ||
| 	  <td><strong>-</strong></td>
 | ||
| 
 | ||
| 	  <td>Указывает, что соответствующий аргумент будет выровнен
 | ||
|             влево (числа обычно выравниваются вправо с добавлением
 | ||
|             лидирующих пробелов при необходимости).</td>
 | ||
| 	</tr>
 | ||
| 	<tr>
 | ||
| 	  <td><strong>+</strong></td>
 | ||
| 
 | ||
| 	  <td>Указывает, что числа всегда будут вставлены со знаком,
 | ||
|             даже если они положительные.</td>
 | ||
| 	</tr>
 | ||
| 	<tr>
 | ||
| 	  <td><em>space</em></td>
 | ||
| 
 | ||
| 	  <td>Указывает, что перед числом будет добавлен пробел, если
 | ||
|             первый символ не знак.</td>
 | ||
| 	</tr>
 | ||
| 	<tr>
 | ||
| 	  <td>0</td>
 | ||
| 
 | ||
| 	  <td>Указывает, что число будет выровнено с добавлением
 | ||
|             лидирующих нулей.</td>
 | ||
| 	</tr>
 | ||
| 	<tr>
 | ||
| 	  <td>#</td>
 | ||
| 
 | ||
| 	  <td>Указывает на использование альтернативной формы
 | ||
|             вывода. Для <strong>o</strong> и <strong>O</strong> преобразований
 | ||
|             гарантирует, что первой цифрой всегда будет <strong>0</strong>. Для
 | ||
|             <strong>x</strong> и <strong>X</strong> преобразований - что <strong>0x</strong> или
 | ||
|             <strong>0X</strong> соответственно будет добавлен в начало
 | ||
|             числа. Для <strong>e</strong>, <strong>E</strong>, <strong>f</strong>, <strong>g</strong>, и
 | ||
|             <strong>G</strong> - что в числе будет использована десятичная
 | ||
|             точка. Для <strong>g</strong> и <strong>G</strong> - что конечные нули не
 | ||
|             будут отброшены.</td>
 | ||
|           </tr>
 | ||
|         </tbody>
 | ||
|       </table>
 | ||
| 
 | ||
|     <h2><a name="format МИНИМАЛЬНАЯ ШИРИНА ПОЛЯ"></a>МИНИМАЛЬНАЯ
 | ||
|       ШИРИНА ПОЛЯ</h2>
 | ||
| 
 | ||
|     <p> Третья часть спецификатора преобразования представляет собой
 | ||
|       число, задающее минимальную ширину поля для данного
 | ||
|       преобразования. Обычно она используется для формирования данных
 | ||
|       в таблицу. Если преобразуемое значение не содержит указанного
 | ||
|       числа символов, одно будет дополнено до необходимого
 | ||
|       размера. Обычно поле заполняется пробелами слева, однако,
 | ||
|       указанные выше флаги <strong>0</strong> и <strong>-</strong> позволяют заполнять его
 | ||
|       нулями слева или пробелами справа.  Если минимальная ширина поля
 | ||
|       указана как <strong>*</strong>, а не как число, то в качестве числового
 | ||
|       значения используется значение следующего аргумента в команде.
 | ||
|     </p>
 | ||
| 
 | ||
|     <h2><a name="format ТОЧНОСТЬ"></a>ТОЧНОСТЬ</h2>
 | ||
| 
 | ||
|     <p> Четвертая часть спецификатора определяет точность
 | ||
|       представления чисел. Она состоит из точки и последующего
 | ||
|       числа. Число имеет различный смысл при различных
 | ||
|       преобразованиях. Для <strong>e</strong>, <strong>E</strong> и <strong>f</strong>
 | ||
|       преобразования оно определяет число цифр справа от десятичной
 | ||
|       точки. Для <strong>g</strong> и <strong>G</strong> - общее число чисел слева и
 | ||
|       справа от десятичной точки (однако, конечные нули будут
 | ||
|       обрезаться, если не указан флаг <strong>#</strong>). Для целочисленных
 | ||
|       преобразований оно определяет минимальное число символов (при
 | ||
|       необходимости будут добавляться лидирующие нули). Для <strong>s</strong>
 | ||
|       преобразований определяет максимальное число символов, которое
 | ||
|       будет выводиться. Если строка длиннее, конечные символы будут
 | ||
|       отброшены. Если точность указана как <strong>*,</strong> а не как число,
 | ||
|       то в качестве числового значения используется значение
 | ||
|       следующего аргумента в команде.
 | ||
|     </p>
 | ||
| 
 | ||
|     <h2><a name="format ПРЕОБРАЗОВАТЕЛЬ ДЛИНЫ"></a>ПРЕОБРАЗОВАТЕЛЬ
 | ||
|       ДЛИНЫ</h2>
 | ||
| 
 | ||
|     <p>
 | ||
|       Пятая часть спецификатора может принимать значения
 | ||
|       <strong>h</strong>или <strong>l</strong>. Значение <strong>h</strong> означает, что
 | ||
|       все числовые значения предварительно обрезаются до 16 бит.
 | ||
|       Значение <strong>l</strong> означает, что никаких предварительных
 | ||
|       преобразований не производится.
 | ||
|     </p>
 | ||
|     
 | ||
|     <h2><a name="format ТИП ПРЕОБРАЗОВАНИЯ"></a>ТИП
 | ||
|       ПРЕОБРАЗОВАНИЯ</h2>
 | ||
| 
 | ||
|     <p> Последняя часть спецификатора представляет собой букву,
 | ||
|       которая определяет тип преобразования. Допускаются следующие
 | ||
|       значения.  </p>
 | ||
| 
 | ||
|   
 | ||
|     <table>
 | ||
|       <tbody>
 | ||
| 	<tr>
 | ||
| 	  <td><strong>d</strong></td>
 | ||
| 
 | ||
| 	  <td>Преобразует целое число в десятичную строку со
 | ||
| 	    знаком.</td>
 | ||
| 	</tr>
 | ||
| 	<tr>
 | ||
| 	  <td><strong>u</strong></td>
 | ||
| 
 | ||
| 	  <td>Преобразует целое число в десятичную строку без
 | ||
|             знака.</td>
 | ||
| 	</tr>
 | ||
| 	<tr>
 | ||
| 	  <td><strong>i</strong></td>
 | ||
| 
 | ||
| 	  <td>Преобразует целое число в десятичную строку со
 | ||
|             знаком. Целое может быть десятичным, восьмеричным (с
 | ||
|             <strong>0</strong> вначале) или шестнадцатеричным (с <strong>0x</strong>
 | ||
|             вначале).</td>
 | ||
| 	</tr>
 | ||
| 	<tr>
 | ||
| 	  <td><strong>o</strong></td>
 | ||
| 
 | ||
| 	  <td>Преобразует целое число в восьмеричную строку без
 | ||
|             знака.</td>
 | ||
| 	</tr>
 | ||
| 	<tr>
 | ||
| 	  <td><strong>x</strong> or <strong>X</strong></td>
 | ||
| 
 | ||
| 	  <td>Преобразует целое число в шестнадцатиричную строку без
 | ||
|             знака. Используются символы `0123456789abcdef'' для
 | ||
|             <strong>x</strong> и ``0123456789ABCDEF'' для <strong>X</strong>.
 | ||
| 	  </td>
 | ||
| 	</tr>
 | ||
| 	<tr>
 | ||
| 	  <td><strong>c</strong></td>
 | ||
| 
 | ||
| 	  <td>Преобразует целое число в восьмибитный символ, который
 | ||
|             оно представляет.</td>
 | ||
| 	</tr>
 | ||
| 	<tr>
 | ||
| 	  <td><strong>s</strong></td>
 | ||
| 
 | ||
| 	  <td>Не преобразует, но просто вставляет строку</td>
 | ||
| 	</tr>
 | ||
| 	<tr>
 | ||
| 	  <td><strong>f</strong></td>
 | ||
| 
 | ||
| 	  <td>Преобразует число с плавающей точкой в десятичное со
 | ||
|             знаком в форме <em>xx.yyy</em>, где число символов после
 | ||
|             запятой определяется точностью.</td>
 | ||
| 	</tr>
 | ||
| 	<tr>
 | ||
| 	  <td><strong>e</strong> or <strong>E</strong></td>
 | ||
| 
 | ||
| 	  <td>Преобразует число с плавающей точкой в число в
 | ||
|             экспоненциальной форме <em>x.yyy<strong>e</strong>╠zz</em>, где число
 | ||
|             символов после запятой определяется точностью (по
 | ||
|             умолчанию <em>6</em>). Для <strong>E</strong> в записи числа
 | ||
|             используется <strong>E</strong> вместо <strong>e</strong>.</td>
 | ||
| 	</tr>
 | ||
| 	<tr>
 | ||
| 	  <td><strong>g</strong> or <strong>G</strong></td>
 | ||
| 
 | ||
| 	  <td>Если порядок числа меньше -4 или больше, чем точность,
 | ||
|             или равен точности, преобразует число с плавающей точкой
 | ||
|             как <strong>%e</strong> или <strong>%E</strong>. В противном случае
 | ||
|             преобразует как <strong>%f</strong>.
 | ||
| 	  </td>
 | ||
| 	</tr>
 | ||
| 	<tr>
 | ||
| 	  <td><strong>%</strong></td>
 | ||
| 
 | ||
| 	  <td>Просто подставляет символ <strong>%.</strong></td>
 | ||
| 	</tr>
 | ||
|       </tbody>
 | ||
|     </table>
 | ||
| 
 | ||
|     <p>Для числовых преобразований аргумент должен быть целым числом
 | ||
|       или десятичным с плавающей точкой. Аргумент преобразуется в
 | ||
|       двоичное число, а затем преобразуется обратно в строку в
 | ||
|       соответствии с указанным типом преобразования.</p>
 | ||
| 
 | ||
|     <h2><a name="format ОТЛИЧИЯ ОТ ANSI SPRINTF"></a>ОТЛИЧИЯ ОТ
 | ||
| 	ANSI SPRINTF</h2>
 | ||
| 
 | ||
|     <p> Поведение команды <strong>format</strong> отличается от процедуры
 | ||
|       <strong>sprintf</strong> в следующих моментах: <p>
 | ||
|     <ol>
 | ||
|       <li> <strong>%p</strong> и <strong>%n</strong> типы не поддерживаются.</li>
 | ||
|       
 | ||
|       <li>Для <strong>%c</strong> аргумент должен быть десятичным числом.</li>
 | ||
|     </ol>
 | ||
| 
 | ||
|     <p>При преобразованиях длины значение <strong>l</strong> игнорируется.</p>
 | ||
| 
 | ||
|   </body>
 | ||
| </html>
 | 
