Этот сайт использует cookies. Продолжение работы с сайтом означает, что Вы согласны!
Форматирование С-строк
Выполнить форматирование C-строки, а также преобразовать значения элементарных типов в C-строку можно с помощью функции sprintf()
. Существует также функция _sprintf_l()
, которая позволяет дополнительно задать локаль. Прототипы функций:
#include <cstdio> /* или #include <stdio.h> */
int sprintf(char *buf, const char *format, ...);
int _sprintf_l(char *buf, const char *format, _locale_t locale, ...);
В параметре format
указывается строка специального формата. Внутри этой строки можно указать обычные символы и спецификаторы формата, начинающиеся с символа %
. Спецификаторы формата совпадают со спецификаторами, используемыми в функции printf()
(см. разд. 2.9). Вместо спецификаторов формата подставляются значения, указанные в качестве параметров. Количество спецификаторов должно совпадать с количеством переданных параметров. Результат записывается в буфер, адрес которого передается в первом параметре (buf
). В качестве значения функция возвращает количество символов, записанных в символьный массив. Пример:
std::setlocale(LC_ALL, "Russian_Russia.1251");
char buf[50] = "";
int x = 100, count = 0;
count = std::sprintf(buf, "x = %d", x);
std::cout << buf << std::endl; // x = 100
std::cout << count << std::endl; // 7
Функция sprintf()
не производит никакой проверки размера буфера, поэтому возможно переполнение буфера. Вместо функции sprintf()
следует использовать функцию sprintf_s()
или _sprintf_s_l()
. Прототипы функций:
#include <cstdio> /* или #include <stdio.h> */
int sprintf_s(char *buf, size_t sizeInBytes, const char *format, ...);
int _sprintf_s_l(char *buf, size_t sizeInBytes, const char *format,
_locale_t locale, ...);
Параметры buf
и format
аналогичны параметрам функции sprintf()
. В параметре sizeInBytes
указывается размер буфера. В качестве значения функции возвращают количество символов, записанных в символьный массив. Пример:
std::setlocale(LC_ALL, "Russian_Russia.1251");
char buf[50] = "";
int count = 0;
double pi = 3.14159265359;
count = sprintf_s(buf, 50, "pi = %.2f", pi);
std::cout << buf << std::endl; // pi = 3,14
std::cout << count << std::endl; // 9
Помощь сайту
ЮMoney (Yandex-деньги): 410011140483022
ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов