stdio.h

vsscanf

Описание

int vsscanf( const char *str, const char *format, va_list ap )

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

Параметри

const char *str

Буфер от който ще бъдат прочетени данните.

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 readDate(const char *date, const char *format, ...)
  5. {
  6.     va_list args;
  7.     va_start(args, format);
  8.     vsscanf(date, format, args);
  9.     va_end(args);
  10. }
  11.  
  12. int  main()
  13. {   
  14.     int year;
  15.     int mount;
  16.     int day;
  17.  
  18.     readDate("2009-03-19", "%d-%d-%d", &year, &mount, &day);
  19.  
  20.     return 0;
  21. }

Виж също

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