vsscanf

Функция            Выполняет форматный ввод из потока.

Синтаксис          #include 
                   int vsscanf(const char *buffer, const char *format,
                               va_list arglist);

Файл, содержащий   stdio.h
прототип

Описание           Функции v...scanf известны как дополнительные
                   точки входа для функций ...scanf. Они ведут себя
                   точно также, как и их ...scanf-двойники, но они
                   имеют доступ к указателю на список аргументов, а
                   не к самому списку.

                   vsscanf сканирует несколько полей ввода и читает
                   из потока по одному символу в каждый момент вре-
                   мени. Затем каждое поле форматируется в соответс-
                   твии с форматной спецификацией, передавемой в
                   vsscanf в форматной строке, на которую указывает
                   format. И наконец, vsscanf запоминает отформати-
                   рованный ввод по адресу, передаваемому ему в ка-
                   честве аргумента, следующего за format. Число
                   спецификаций формата и адресов должно быть равно
                   числу полей ввода.

                   Смотри в scanf описание информации, включенной в
                   спецификацию формата.

                   vsscanf может закончить сканирование конкретного
                   поля, не достигнув нормального символа конца_поля
                   (пробел), или полностью прервать его по ряду при-
                   чин. Смотри в scanf описание различных случаев.

Возвращаемое       vsscanf возвращает число входных полей, которые
значение           были сосканированы, преобразованы и запомнены.
                   Возвращаемое значение не включает сканированные
                   поля, которые не были запомнены. Если не было
                   сохранено ни одно поле, то возвращаемое значение
                   - 0.

                   Если vsscanf пытается читать в конце_файла, то
                   возвращаемое значение EOF.

Переносимость      vsscanf поддерживается на UNIX System V.

Смотрите также      fscanf scanf va_arg va_end va_start

Пример:

#include
#include

char buffer[80] = "30 90.0 abc";

int vssf(char *fmt, ...);
{
   va_list argptr;
   int cnt;
   fflash(stdin);
   va_start(argptr,format);
   cnt = vsscanf(buffer,fmt,argptr);
   va_end(argptr);
   return cnt;
}

int main(void)
{
   int inumber;
   float fnumber;
   char string[80];
   vssf("%d %f %s",&inumber,&fnumber,string);
   printf("%d %f %s",inumber,fnumber,string);
   return 0;
}