Функция vfprintf () в C ++ используется для записи форматированной строки в файловый поток.
vfprintf () прототип
int vfprintf (FILE * поток, const char * format, va_list vlist);
vfprintf()
Функция записывает строку , на которую указывает формат для потока файла потока. Формат строки может содержать спецификаторы формата, начинающиеся с%, которые заменяются значениями переменных, которые передаются в виде списка vlist.
Это определено в заголовочном файле.
Параметры vfprintf ()
- stream: поток выходного файла для записи результата.
- формат: указатель на строку с завершающим нулем, которая записывается в файловый поток. Он состоит из символов и необязательных спецификаторов формата, начинающихся с%.
Спецификаторы формата заменяются значениями соответствующих переменных, следующих за строкой формата.
Спецификатор формата состоит из следующих частей:
- Ведущий знак%
- Флаги: необязательный один или несколько флагов, которые изменяют поведение преобразования.
- -: Выровнять результат по левому краю внутри поля. По умолчанию выравнивается по правому краю.
- +: Знак результата прикрепляется к началу значения даже для положительных результатов.
- Пробел: при отсутствии знака ставится пробел в начале результата.
- #: Выполняется альтернативная форма преобразования.
- 0: используется для целых чисел и чисел с плавающей запятой. Для дополнения чисел вместо пробела используются ведущие нули.
- Ширина: необязательное * или целочисленное значение, используемое для указания поля минимальной ширины.
- Точность: необязательное поле, состоящее из. за которым следует *, целое число или ничего, чтобы указать точность.
- Длина: необязательный модификатор длины, указывающий размер аргумента.
- Спецификатор: спецификатор формата преобразования. Доступные спецификаторы формата следующие:
Описатель формата Описание % Печать% c Записывает одиночный символ s Записывает символьную строку д или я Преобразует целое число со знаком в десятичное представление о Преобразует целое число без знака в восьмеричное представление X или x Преобразует целое число без знака в шестнадцатеричное представление. ты Преобразует целое число без знака в десятичное представление F или F Преобразует число с плавающей запятой в десятичное представление E или e Преобразует число с плавающей запятой в представление десятичной степени А или а Преобразует число с плавающей запятой в шестнадцатеричную экспоненту 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