sprintf()

Выполняет форматирование строки.

Краткое описание

int sprintf (string s, string format [,<type1> var1 [,<type2> var2 …]]);

Параметры

ПараметрЗначение
>sstring
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

См. также

dpValToString()fprintf()dpSetFormat()

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *