stdio.h

vfprintf

Описание

int vfprintf( FILE *fp, char *format, va_list arg_ptr )

Записва низ в файл. Низа е форматиран на базата на параметъра format.

Параметри

FILE *fp

Указател на файла върнат от fopen.

char *format

Форматиращия низ е съставен от нула или повече нормални символи и дириктиви за преобразуване. Всяка директива за преобразуване започва с знака % и се заменя с един параметър.

Типове директиви за форматиране

Директива Описание
%% Отпечатва процент
%c Отпечатва символ
%d Отпечатва int със знак
%i Отпечатва int със знак
%e Отпечатва се в научна нотация е
%E Отпечатва се в научна нотация Е
%f Отпечатва число с плаваща запетая
%g Отпечатай с по краткото %е или %f
%G Отпечатай с по краткото %E или %f
%o Отпечатва числото в осмично представяне
%s Отпечатва низ
%u Огпечатва unsigned int
%x Отпечатва число в 16-тичен формат с малки букви
%X Отпечатва число в 16-тичен формат с големи букви
%p Отпечатва указател
%n  

Всяка директива за форматиране в допълнение може да притежава четери вида флага. Флагове за подравняване и запълване, флагове за дължина, флагове за точност и флагове за модифициране.

Флагове за подравняване и запълване

Флаг Описание
- Ляво подравняване при зададена дилжина на запълване. По подразбиране подравняването е десно.
+ Задава показването венаги на знака за плюс или минус. По подразбиране се показва знака само за минус.
(интервал) Ако не е зададен знак за отпечатване, интервал се печата пред числото.
# Използва се с %x %X. Задава пред числото да бъде поставен знака 0x.
0 Запълването на определената дължина се осъществява с нули. По подразбиране е с интервали.

 Флагове за дължина

Флаг Описание
(дължина) Минимален брой символи за отпечатване. Ако дължината на стоиноста и по малка от зададената резултата се допълва с интевали. Стойноста не се отрязва ако дължината и не надхвърла зададената.
* Минималния брой символи се задава динамично чрез параметър в аргументите.

Флагове за точност

Флаг Описание
.дължина

За целочислени типове(%d ,%i, %u, %o, %x, %X) флага определя броя на символите кайто ще бъдат показани. За числа с плаваща запетая (%f, %E) определя броя символи които ще бъдат показани след запетаята. За низове задава максималния брой символи който ще бъдат отпечатани.

.*  Задава броя на символите динамично чрез параметър.

 Флагове за модифициране

Флаг Описание
h Визуализира short int параметри. Използва се с целочислиени типове(%d ,%i, %u, %o, %x, %X).
l Визуализира long int пораметри с целочислени типове(%d ,%i, %u, %o, %x, %X) и разширени низове с %s.
L Визуализира long double параметри. Използва се с типове за плаваща запетая (%f, %g, %G, %e, %E).

 

va_list arg_ptr

va_list е тип който се използва да държи списък от параметри подадени на функцията чрез макроса "...". За да бъде взет такъв лист се използва функцията va_start на която се подава указател към променливата непосредствено преди макроса "...".

Връщани стойности

Връща дължината на изведения низ.

Примери

от: adviser at cpp-examples dot com   Свали кода във файл
  1. #include <stdio.h>
  2. #include <stdarg.h>
  3.  
  4. void printError(FILE *fp, char * format, ...)
  5. {
  6.     va_list args;
  7.     va_start(args, format);
  8.     vfprintf(fp, format, args);
  9.     va_end(args);
  10. }
  11.  
  12. int main ()
  13. {
  14.     FILE *fp = fopen("test.log", "w");
  15.     if(fp)
  16.     {
  17.         printError(fp, "Грешка: %s", "Това е тест!!!");
  18.         printError(fp, "Грешка %d проблем с %s", 2, "хардуера");
  19.         fclose(fp);
  20.     }
  21.     return 0;
  22. }
  23.  
  24.  

Бележки

va_list, va_start, va_end са дефинирани в stdarg.h.

Виж също

fprintf - форматиран изход във файл
sprintf - пише форматиран изход в буфер
printf - отпечатва форматиран изход