函式
<cstdio>

vscanf

int vscanf ( const char * format, va_list arg );
讀取格式化資料到可變引數列表
從標準輸入(stdin)讀取資料,並根據引數 format 的格式,將資料儲存到由 arg 標識的可變引數列表中的元素所指向的位置。

在內部,該函式從由 arg 標識的列表中檢索引數,如同對其使用了 va_arg 一樣,因此 arg 的狀態很可能會因該呼叫而改變。

在任何情況下,arg 都應在呼叫前透過 va_start 進行初始化,並在呼叫後的某個時刻透過 va_end 進行釋放。

引數

format
C 字串,包含一個格式化字串,其遵循與 scanf 中的 format 相同的規範(詳見 scanf)。
arg
一個標識由 va_start 初始化的可變引數列表的值。
va_list 是在 <cstdarg> 中定義的特殊型別。

返回值

成功時,函式返回成功填充的引數列表項的數量。由於匹配失敗、讀取錯誤或到達檔案結尾,該計數可能與預期的項數相符,也可能更少(甚至為零)。

如果發生讀取錯誤或在讀取時到達檔案結尾,則會設定相應的指示器(feofferror)。並且,如果其中任何一種情況在成功讀取任何資料之前發生,則返回 EOF

如果在解釋寬字元時發生編碼錯誤,函式會設定 errnoEILSEQ.

示例

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

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

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

  printf ("Please enter a number and a word: ");
  fflush (stdout);
  GetMatches (" %d %99s ", &val, str);
  printf ("Number read: %d\nWord read: %s\n", val, str);

  return 0;
}

可能的輸出
Please enter a number and a word: 911 airport
Number read: 911
Word read: airport


另見