函式
<cwchar>

wscanf

int wscanf (const wchar_t* format, ...);
從標準輸入讀取格式化資料
stdin讀取資料,並根據C寬字串format將其儲存到其他引數指向的位置。

附加引數應該指向已分配的物件,其型別由 format 字串中相應的格式說明符指定。

寬字元在stdin是多位元組字元:這些字元的轉換方式如同呼叫了mbrtowc(使用了stream的內部mbstate_t物件)。

這是scanf<cstdio>)的寬字元等價函式。

引數

format
C 語言寬字串,包含一個格式字串,其規範與 scanf 中的 format 相同(更多詳情請參見 scanf)。
請注意,所有格式說明符的含義與 scanf 中的相同;因此,%lc應用於讀取單個寬字元(而不是%c),同樣%ls應用於寬字串(而不是%s).
... (附加引數)
根據 format 字串,該函式可能需要一系列附加引數,每個引數都包含一個指向已分配儲存空間的指標,其中提取的字元的解釋將以適當的型別儲存。
這些引數的數量至少應與格式說明符儲存的值的數量相同。多餘的引數會被函式忽略。

返回值

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

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

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

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/* wscanf example */
#include <wchar.h>

int main ()
{
  wchar_t str [80];
  int i;

  wprintf (L"Enter your family name: ");
  wscanf (L"%ls",str);
  wprintf (L"Enter your age: ");
  wscanf (L"%d",&i);
  wprintf (L"Mr. %ls, %d years old.\n",str,i);
  wprintf (L"Enter a hexadecimal number: ");
  wscanf (L"%x",&i);
  wprintf (L"You have entered %#x (%d).\n",i,i);

  return 0;
}

可能的輸出
Enter your family name: Soulié
Enter your age: 29
Mr. Soulié, 29 years old.
Enter a hexadecimal number: ff
You have entered 0xff (255).


另見