C ++ vfprintf () - Стандартна бібліотека C ++

Функція vfprintf () в C ++ використовується для запису відформатованого рядка до потоку файлів.

прототип vfprintf ()

 int vfprintf (FILE * потік, формат const char *, va_list vlist);

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

Це визначається у файлі заголовка.

vfprintf () Параметри

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

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

    Специфікатор формату складається з таких частин:

    • Провідний знак%
    • Прапори: необов’язковий один або кілька прапорів, що змінює поведінку перетворення.
      • -: Ліворуч обґрунтуйте результат у полі. За замовчуванням це правильно виправдано.
      • +: Знак результату додається до початку значення, навіть для позитивних результатів.
      • Пробіл: Якщо знаку немає, пробіл приєднується до початку результату.
      • #: Виконується альтернативна форма перетворення.
      • 0: використовується для цілого числа та числа з плаваючою комою. Провідні нулі використовуються для заповнення цифр замість пробілу.
    • Ширина: необов’язкове * або ціле значення, що використовується для вказівки поля мінімальної ширини.
    • Точність: Необов’язкове поле, що складається з a. після чого * або ціле число, або нічого, щоб вказати точність.
    • Довжина: необов’язковий модифікатор довжини, який визначає розмір аргументу.
    • Специфікатор: специфікатор формату перетворення. Доступні специфікатори формату такі:
      Специфікатор формату Опис
      % Відбитків%
      c Пише одного персонажа
      s Записує рядок символів
      d або i Перетворює підписане ціле число в десяткове подання
      o Перетворює ціле число без знака у вісімкове представлення
      X або x Перетворює ціле число без знака в шістнадцяткове подання
      u Перетворює ціле число без знака в десяткове подання
      F або f Перетворює число з плаваючою точкою в десяткове подання
      Е або е Перетворює число з плаваючою комою в десятковий запис степеня
      A або a Перетворює число з плаваючою комою в шістнадцятковий показник
      G або g Перетворює число з плаваючою комою в десятковий або десятковий запис степеня
      п Повертає кількість символів, записаних дотепер цим викликом функції. Результат записується у значення, на яке вказує аргумент
      стор Пише послідовність символів реалізації, що визначає покажчик.

      Отже, загальним форматом специфікатора формату є: %(flags)(width)(.precision)(length)specifier

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

vfprintf () Повернене значення

У разі успіху vfprintf()функція повертає кількість записаних символів. При відмові повертає від'ємне значення.

Приклад: Як працює функція vfprintf ()

 #include #include void write(FILE* fp, const char *fmt,… ) ( va_list args; va_start(args, fmt); vfprintf(fp, fmt, args); va_end(args); ) int main () ( FILE *fp = fopen("data.csv","w"); char name(5)(50) = ("John","Harry","Kim","Yuan","Laxmi"); int age(5) = (13,41,26,21,32); write(fp, "%s,%s", "name", "age"); for (int i=0; i<5; i++) write(fp, "%s,%d", name(i), age(i)); return 0; )

Після запуску програми у файл data.csv буде записано:

 ім'я, вік Джон, 13 Гаррі, 41 Кім, 26 Юань, 21 Лакшмі, 32

Цікаві статті...