stdio.h

vfscanf

Описание

int vfscanf( FILE *fp, const char *format, va_list ap )

Функцията чете файла сочен от указателя fp и съхранява прочетената информация в променливите от списъка с аргументи. vfscanf чете всички вградени типове данни и автоматично ги превръща в подходящия формат.

Параметри

FILE *fp

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

const char *format

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

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

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

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

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

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

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

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

 

va_list ap

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

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

Функцията връща броя на успешно прочетените и записани в променливи стойности.

Примери

от: adviser at cpp-examples dot com   Свали кода във файл
  1. #include <stdio.h>
  2. #include <stdarg.h>
  3.  
  4. void read(const char *format, ...)
  5. {
  6.     FILE *fp = fopen("test.txt", "r");
  7.     if(fp)
  8.     {
  9.         va_list args;
  10.         va_start(args, format);
  11.         vfscanf(fp, format, args);
  12.         va_end(args);
  13.         fclose(fp);
  14.     }
  15. }
  16.  
  17. int  main()
  18. {   
  19.     int a;
  20.     int b;
  21.     int c;
  22.  
  23.     read("%d%d%d", &a, &b, &c);
  24.  
  25.     return 0;
  26. }

Виж също

scanf - чете форматиран вход от stdin
fscanf - чете форматиран вход от файл
scanf - чете форматиран вход от stdin
vscanf - прочита форматиран вход
vsscanf - прочита форматиран вход