函式
<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


另見