C ++ vsprintf () - Стандартная библиотека C ++

Функция vsprintf () в C ++ используется для записи форматированной строки в строковый буфер.

vsprintf () прототип

 int vsprintf (char * buffer, const char * format, va_list vlist); 

vsprintf()Функция записывает строку , на которую указывает формат для строки символов буфера. Формат строки может содержать спецификаторы формата, начинающиеся с%, которые заменяются значениями переменных, которые передаются в виде списка vlist.

Это определено в заголовочном файле.

vsprintf () Параметры

  • буфер: указатель на строку символов для записи результата.
  • формат: указатель на строку с завершающим нулем, которая записывается в файловый поток. Он состоит из символов и необязательных спецификаторов формата, начинающихся с%.

    Спецификаторы формата заменяются значениями соответствующих переменных, следующих за строкой формата.

    Спецификатор формата состоит из следующих частей:

    • Ведущий знак%
    • Флаги: необязательный один или несколько флагов, которые изменяют поведение преобразования.
      • -: Выровнять результат по левому краю внутри поля. По умолчанию выравнивается по правому краю.
      • +: Знак результата прикрепляется к началу значения даже для положительных результатов.
      • Пробел: при отсутствии знака ставится пробел в начале результата.
      • #: Выполняется альтернативная форма преобразования.
      • 0: используется для целых чисел и чисел с плавающей запятой. Для дополнения чисел вместо пробела используются ведущие нули.
    • Ширина: необязательное * или целочисленное значение, используемое для указания поля минимальной ширины.
    • Точность: необязательное поле, состоящее из. за которым следует *, целое число или ничего, чтобы указать точность.
    • Длина: необязательный модификатор длины, указывающий размер аргумента.
    • Спецификатор: спецификатор формата преобразования. Доступные спецификаторы формата следующие:
      Описатель формата Описание
      % Печать%
      c Записывает одиночный символ
      s Записывает символьную строку
      д или я Преобразует целое число со знаком в десятичное представление
      о Преобразует целое число без знака в восьмеричное представление
      X или x Преобразует целое число без знака в шестнадцатеричное представление.
      ты Преобразует целое число без знака в десятичное представление
      F или F Преобразует число с плавающей запятой в десятичное представление
      E или e Преобразует число с плавающей запятой в представление десятичной степени
      А или а Преобразует число с плавающей запятой в шестнадцатеричную экспоненту
      G или g Преобразует число с плавающей запятой в десятичное или десятичное представление экспоненты
      п Возвращает количество символов, записанных на данный момент этим вызовом функции. Результат записывается в значение, на которое указывает аргумент
      п Записывает последовательность символов, определяемую реализацией, определяющую указатель.

      Итак, общий формат спецификатора формата: %(flags)(width)(.precision)(length)specifier

  • vlist: список аргументов, содержащих данные для записи.

vsprintf () Возвращаемое значение

В случае успеха vsprintf()функция возвращает количество записанных символов. В случае неудачи возвращает отрицательное значение.

Пример: как работает функция vsprintf ()

 #include #include void write(char* buf, const char *fmt,… ) ( va_list args; va_start(args, fmt); vsprintf(buf, fmt, args); va_end(args); ) int main () ( char buffer(100); char fname(20) = "Bjarne"; char lname(20) = "Stroustrup"; char lang(5) = "C++"; write(buffer, "%s was created by %s %s", lang, fname, lname); printf("%s", buffer); return 0; )

Когда вы запустите программу, вывод будет:

 C ++ был создан Бьярном Страуструпом

Интересные статьи...