Описание функции
sprintf
Возвращает форматированную строку.
sprintf(*Buffer, format.p-utf8, var1=0[, var2=0[, var3=0]])
Параметры
*Buffer | Указатель на строку, куда будет помещён результат. Это должно быть достаточно, чтобы поместить результат. |
format.p-utf8 |
Строка-шаблон, содержащая управляющие последовательности. |
var1-var32 |
Передаваемые параметры. Их количество задаётся и в объявлении функции, в зависимости сколько параметров вам нужно передать. |
Примечания
Каждая "переменная" (var1...var32) является Integrer.Тип | Тип переменной | Выходной формат |
---|---|---|
d, i | Целое | Десятичное целое число. |
o | Целое | Восьмеричное целое число без знака. |
u | Целое | Десятичное целое число без знака. |
x | Целое | Шестнадцатеричное целое число без знака. Символы "abcdef" в нижнем регистре. |
X | Целое | Аналогично предыдущему x, но "ABCDEF" в верхнем регистре. |
s | Строка | Строка. |
Флаг | Значение | По умолчанию |
---|---|---|
- | Устанавливает левое выравнивание результата в пределах ширины области. | Правое выравнивание. |
+ | Устанавливает префикс выходного значения, знак "+" или "-", если используется знаковый тип. | Знак появляется только для отрицательных величин (-). |
0 | Если спецификатор ширины с префиксом 0, то нули добавляются до заполнения минимальной ширины. Если появляются 0 и "-", то 0 игнорируется. Если 0 используется с типом целого числа (i, u, x, X, o, d) то 0 игнорируется. | Отсутствует заполнение. |
Пробел | Префикс выходного значения с пробелом, если выходное значение знаковое и положительно; Пробел игнорируется если используются оба флага "Пробел" и "+". | Отсутствует. |
# | При использовании типов o, x, X приписывает префикс любому ненулевому выходному значению соответственно 0, 0x, 0X. | Отсутствует. |
Тип | Значение | По умолчанию |
---|---|---|
d, i, u, o, x, X | Точность задает минимальное количество цифр для вывода. Если количество цифр в аргументе меньше, чем точность, выходное значение дополняется нулями слева. Значение не сокращается, когда количество цифр превышает точность. | По умолчанию точность - 1. |
s | Точность определяется максимальным количеством символов для вывода. Символы сверх точности не выводятся. | Символы выводятся до первого нулевого символа. |
Пример
EnableExplicit
ImportC ""
sprintf(*str, format.p-utf8, Param1=0, Param2=0, Param3=0, Param4=0, Param5=0, Param6=0)
EndImport
; Define Buff.s = Space(1000)
Define *Buff = AllocateMemory(1000, #PB_Memory_NoClear)
; FillMemory(*Buff, 1000, 0, #PB_Byte)
Define Time$, n, u
; Пример 1
n = 43951789
u = -43951789
; учтите, что двойное %%, выводит символ как есть, буквально "%"; здесь \n - перенос строки, \t - табуляция
sprintf(*Buff, "%%d = %d", n) ; "43951789" стандартное целое
Debug PeekS(*Buff, -1, #PB_UTF8)
sprintf(*Buff, "%%u = %u", n) ; "43951789" положительное целое число без знака
Debug PeekS(*Buff, -1, #PB_UTF8)
sprintf(*Buff, "%%o = %o", n) ; "247523255" восьмеричное
Debug PeekS(*Buff, -1, #PB_UTF8)
sprintf(*Buff, "%%x = %x", n) ; "29ea6ad" шестнадцатеричный вид (в нижнем регистре)
Debug PeekS(*Buff, -1, #PB_UTF8)
sprintf(*Buff, "%%X = %X", n) ; "29EA6AD" шестнадцатеричный вид (в верхнем регистре)
Debug PeekS(*Buff, -1, #PB_UTF8)
sprintf(*Buff, "%%+d = %+d", n) ; "+43951789" знак указывающий положительное число
Debug PeekS(*Buff, -1, #PB_UTF8)
sprintf(*Buff, "%%+d <0= %+d", u) ; "-43951789" знак указывающий отрицательное число
Debug PeekS(*Buff, -1, #PB_UTF8)
Debug "—————————"
sprintf(*Buff, "%04d-%02d-%02d", 2008, 4, 1) ; дата
Debug PeekS(*Buff, -1, #PB_UTF8)
sprintf(*Buff, "%02d:%02d:%02d", 8, 45, 9) ; время
Debug PeekS(*Buff, -1, #PB_UTF8)
sprintf(*Buff, "%04d-%02d-%02d %02d:%02d:%02d", 2008, 4, 1, 8, 45, 9) ; дата и время
Debug PeekS(*Buff, -1, #PB_UTF8)
Debug "—————————"
; Пример 2
Time$ = "5" ; только цифра от 0 до 9, проще использовать %d
; В многоязычном интерфейсе позволяет вставить переменную в любую позицию.
sprintf(*Buff, "%s minutes passed", Time$)
Debug PeekS(*Buff, -1, #PB_UTF8)
sprintf(*Buff, "прошло %s минут", Time$)
Debug PeekS(*Buff, -1, #PB_UTF8)
Debug "—————————"
n = $F4E6DC
sprintf(*Buff, "%06X", n)
Debug "Число цвет в шестнадцатеричном виде"
Debug PeekS(*Buff, -1, #PB_UTF8)
Debug Hex(n, #PB_Quad)
FreeMemory(*Buff)