Выполняет форматирование строки. |
Краткое описание
int sprintf (string s, string format [,<type1> var1 [,<type2> var2 …]]); |
Параметры
Параметр | Значение |
>s | string |
format | Формат |
var1, var2, … | Значения |
Обозначения типов
d | Аргумент представлен в качестве десятичного числа |
o | Аргумент представлен в виде восьмеричного числа без ведущих нулей. |
u | Аргумент отображается в виде беззнакового десятичного числа. |
x | Аргумент представлен в виде шестнадцатеричного числа (без ведущих нулей). Используются буквы abcdef. |
X | Аналогично x. Но используются буквы ABCDEF. |
f | Аргумент float/double представлен в качестве десятичного числа. [ — ] ddd.ddd — по умолчанию: |
e | Аргумент float/double представлен в качестве экспоненты в формате [ — ] d.ddde dd Экспонента всегда содержит, как минимум, два разряда. Если значение равно нулю, экспонента равна нулю. |
E | Аналогично e. Только вместо «e» используется «E». |
g | Аналогично e, но зависит от значения. Тип преобразования e используется только если значение экспоненты менее -4 или больше точности. |
G | Аналогично g. Вывод E вместо e. |
s | Аргументом является строка. Отдельные символы выводятся из строки до достижения нулевого символа («/ 0») или такого количества символов, которое необходимо для точности. |
Flag | Значение |
+ | Обеспечивает выделение места для знака (напр., для знака «+» или «-» перед числом). Число 3,112, отформатированное с помощью %+6,2f’ = +3,11 |
— | Выравнивание по левому краю (по умолчанию — выравнивание по правому краю), например, sprintf(valueString, «%-8,2f», rawValueF3); в этом случае значение 2,1 (rawValueF3) отформатировано с помощью ‘%-8.2f’ . Таким образом, результат 2,10 выравнен по левому краю (см. пример ниже, на этой странице). |
blank | Пробел между знаком процента и шириной (число) позволяет выделять место для знака, напр., % 6,2f. См. примеры далее на страницы. |
Ширина | Значение |
Номер | Минимальное число печатных символов, напр., «%6d». Если напечатанное значение короче данного числа, добавляются пробелы. |
0Number | Минимальное число печатных символов. В случае если минимальное число не достигается, добавляются ведущие нули, например, число 45,765998765, отформатированное с помощью %07,2f’ = 0045,77, — это значит, что всего указано 7 знаков с ведущими нулями и двумя десятичными разрядами (,2). Тем не менее, в результате могут указываться более 7 символов. |
.Номер | Указывает количество печатных десятичных разрядов (десятичных знаков). |
Возвращаемое значение
См. «Описание» |
Ошибки
Отсутствующие/неверные аргументы |
Описание
Записывает выходные значения в указанном формате в строку s и возвращает количество записанных символов, в случае возникновения ошибок — отрицательное число. В противном случае, использовать функции «sprintf()», как fprintf(). |
ПРИМЕР Пример демонстрирует то, как применяется функция sprintf . Пример включает в себя форматирование различных типов переменных («float», «int» и «string»), знаковых переменных, выравнивание форматированной строки, определенную длину переменных и т.д. (см. пример ниже). main() { float rawValueF1 = 45.765998765, rawValueF2 = 1637451.6543, rawValueF3 = 2.1, rawValueF4 = -3.112, rawValueF5; int rawValueD1 = 1234567890, rawValueD2 = 12; string rawValueS1 = «ABC», rawValueS2 = «ABCDEFGHIJKL», valueString; //Форматирование переменных с плавающей запятой sprintf(valueString, «%6.2f», rawValueF1); DebugN(rawValueF1 + » formatted ‘%6.2f’ -> ‘»+valueString+»‘ length: » + strlen(valueString)); sprintf(valueString, «%6.2f», rawValueF2); DebugN(rawValueF2 + » formatted ‘%6.2f’ -> ‘»+valueString+»‘ length: » + strlen(valueString)); sprintf(valueString, «%6.2f», rawValueF3); DebugN(rawValueF3 + » formatted ‘%6.2f’ -> ‘»+valueString+»‘ length: » + strlen(valueString)); sprintf(valueString, «%6.2f», rawValueF4); DebugN(rawValueF4 + » formatted ‘%6.2f’ -> ‘»+valueString+»‘ length: » + strlen(valueString)); /* Пробел, расположенный между знаком процента и шириной поля, позволяет зарезервировать пространство для знака.*/ sprintf(valueString, «% 6.2f», -rawValueF4); DebugN(-rawValueF4 + » formatted ‘% 6.2f’ -> ‘»+valueString+»‘ length: » + strlen(valueString)); //Знак «плюс» также позволяет резервировать место под знак sprintf(valueString, «%+6.2f», -rawValueF4); DebugN(-rawValueF4 + » formatted ‘%+6.2f’ -> ‘»+valueString+»‘ length: » + strlen(valueString)); sprintf(valueString, «%+6.2f», rawValueF4); DebugN(rawValueF4 + » formatted ‘%+6.2f’ -> ‘»+valueString+»‘ length: » + strlen(valueString)); //Ведущие нули sprintf(valueString, «%07.2f», rawValueF1); DebugN(rawValueF1 + » formatted ‘%07.2f’ -> ‘»+valueString+»‘ length: » + strlen(valueString)); /* Выравнивание «valueString» со знаком, выравнивание по левому краю (по умолчанию — выравнивание по правому краю)*/ sprintf(valueString, «%8.2f», rawValueF3); DebugN(rawValueF3 + » formatted ‘%8.2f’ -> ‘»+valueString+»‘ length: » + strlen(valueString)); sprintf(valueString, «%-8.2f», rawValueF3); DebugN(rawValueF3 + » formatted ‘%-8.2f’ -> ‘»+valueString+»‘ length: » + strlen(valueString)); //Максимальная ширина поля целых чисел (rawValueD1) sprintf(valueString, «%6d», rawValueD1); DebugN(rawValueD1 + » formatted ‘%6d’ -> ‘»+valueString+»‘ length: » + strlen(valueString)); sprintf(valueString, «%6d», rawValueD2); DebugN(rawValueD2 + » formatted ‘%6d’ -> ‘»+valueString+»‘ length: » + strlen(valueString)); //Форматирование строк (определенная длина) sprintf(valueString, «%-6s», rawValueS1); DebugN(rawValueS1 + » formatted ‘%-6s’ -> ‘»+valueString+»‘ length: » + strlen(valueString)); /* Точность в строке определяет количество символов, используемыхдля переменной */ sprintf(valueString, «%8.2s», rawValueS2); DebugN(rawValueS2 + » formatted ‘%8.2’ -> ‘»+valueString+»‘ length: » + strlen(valueString)); //Точность в строке может комбинироваться с выравниванием sprintf(valueString, «%-8.2s», rawValueS2); DebugN(rawValueS2 + » formatted ‘%8.2’ -> ‘»+valueString+»‘ length: » + strlen(valueString)); /* Строка формата может содержать фиксированные символы. Они добавляются к отформатированному значению */ sprintf(valueString, «PREFIX %6.2f», rawValueF1); DebugN(rawValueF1 + » formatted ‘PREFIX %6.2f’ -> ‘»+valueString+»‘ length: » + strlen(valueString)); /* Строка формата может получать дополнительные символы из атрибутов точки данных */ dpGet(«ExampleDP_Arg1.:_original.._value»,rawValueF5); sprintf(valueString, «%6.2f «+dpGetUnit(«ExampleDP_Arg1.:_original.._value»), rawValueF5); DebugN(«Original value: «,rawValueF5 + » Mit %6.2f formatted value-> ‘»+valueString+»‘ length: » + strlen(valueString)); >} |
Используется для объекта
Строки |
Доступность
CTRL |
См. также