Функция Выполняет форматный ввод из потока.
Синтаксис #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.
Смотрите также fscanfscanfva_argva_endva_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;
}