函数
<cstdio>

vsscanf

int vsscanf ( const char * s, const char * format, va_list arg );
从字符串读取格式化数据到可变参数列表
s 中读取数据,并根据 format 参数将其存储到由 arg 标识的可变参数列表中的元素所指向的位置。

在内部,该函数从由 arg 标识的列表中检索参数,就像对其使用了 va_arg 一样,因此 arg 的状态很可能会因调用而改变。

无论如何,arg 应该在调用之前的某个时刻由 va_start 初始化,并且预计在调用之后的某个时刻由 va_end 释放。

参数

s
C 字符串,函数将其作为源来检索数据。
format
C 字符串,包含一个格式化字符串,其遵循与 scanf 中的 format 相同的规范(详见 scanf)。
arg
一个标识由 va_start 初始化的可变参数列表的值。
va_list 是在 <cstdarg> 中定义的特殊类型。

返回值

成功时,函数返回成功填充的参数列表中的项目数。在匹配失败的情况下,此计数可以与预期的项目数相匹配,也可能更少(甚至为零)。
如果在任何数据可以被成功解析之前发生输入失败,则返回 EOF

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/* vsscanf example */
#include <stdio.h>
#include <stdarg.h>

void GetMatches ( const char * str, const char * format, ... )
{
  va_list args;
  va_start (args, format);
  vsscanf (str, format, args);
  va_end (args);
}

int main ()
{
  int val;
  char buf[100];

  GetMatches ( "99 bottles of beer on the wall", " %d %s ", &val, buf);

  printf ("Product: %s\nQuantity: %d\n", buf, val);

  return 0;
}

可能的输出
Product: bottles
Quantity: 99


另见