函式
<cwchar>

fwscanf

int fwscanf (FILE* stream, const wchar_t* format, ...);
從流中讀取格式化資料
stream讀取資料,並根據C寬字串format將其儲存到其他引數指向的位置。

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

檔案中的寬字元的外部表示是多位元組字元:這些字元的轉換方式如同呼叫mbrtowc(使用stream的內部mbstate_t物件)。

這是fscanf<cstdio>)的寬字元版本。

引數

stream
指向一個FILE物件的指標,該物件標識要從中讀取資料的輸入流。
該流不應有任何朝向,或應是寬字元朝向的(對流的第一個 I/O 操作決定了它是位元組朝向還是寬字元朝向,請參閱 fwide)。
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
/* fwscanf example */
#include <stdio.h>
#include <wchar.h>

int main ()
{
  wchar_t str [80];
  float f;
  FILE * pFile;

  pFile = fopen ("myfile.txt","w+");
  fwprintf (pFile, L"%f %ls", 3.1416, L"PI");
  rewind (pFile);
  fwscanf (pFile, L"%f", &f);
  fwscanf (pFile, L"%ls", str);
  fclose (pFile);
  wprintf (L"I have read: %f and %ls \n",f,str);
  return 0;
}

此示例程式碼建立一個名為myfile.txt的檔案,並向其中寫入一個浮點數和一個字串。然後,流被倒回,並使用fscanf讀取這兩個值。最後,它將產生類似於
I have read: 3.141600 and PI


另見