函式
<cwchar>

fgetwc

wint_t fgetwc (FILE * stream);
從流中獲取寬字元
返回指定的內部位置指示器當前指向的寬字元。然後,內部位置指示器會前進到下一個寬字元。

由於外部檔案中的寬字元由多位元組字元表示,因此該函式可能涉及從檔案中讀取多個位元組,這些位元組被解釋為單個字元,就好像對的內部 mbstate_t 物件呼叫了 mbrtowc 一樣。

如果讀取的位元組序列無法解釋為有效的多位元組字元(或者可用的位元組不足以組成一個寬字元),則函式返回 WEOF 並設定EILSEQ設定為 errno 的值。

如果呼叫時流處於檔案末尾,則函式返回 WEOF 並設定流的檔案結束指示器feof)。

如果發生讀取錯誤,則函式返回 WEOF 並設定流的錯誤指示器ferror)。

fgetwcgetwc 等效,不同之處在於 getwc 在某些庫中可能實現為宏。

這是 fgetc<cstdio>)的寬字元等效項。

引數

stream
指向標識輸入流的 FILE 物件的指標。
該流不應有任何朝向,或應是寬字元朝向的(對流的第一個 I/O 操作決定了它是位元組朝向還是寬字元朝向,請參閱 fwide)。

返回值

成功時,返回讀取的字元(提升為 wint_t 型別的值)。
返回型別為 wint_t,以容納特殊值 WEOF,該值表示失敗
如果讀取的位元組序列無法解釋為有效的寬字元,該函式將返回 WEOF 並將 errno 設定為EILSEQ.
如果位置指示符位於檔案末尾,該函式將返回 WEOF 並設定eof 指示符feof)。
如果發生讀取錯誤,該函式也會返回 WEOF,但會設定其錯誤指示符ferror)。

示例

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

int main ()
{
  FILE * pFile;
  wint_t wc;
  int n = 0;
  pFile=fopen ("myfile.txt","r");
  if (pFile!=NULL)
  {
    do {
      wc = fgetwc (pFile);
      if (wc == L'$') n++;
    } while (wc != WEOF);
    fclose (pFile);
    wprintf (L"The file contains %d dollar sign characters ($).\n",n);
  }
  return 0;
}

此程式讀取一個名為myfile.txt的現有檔案,逐個字元地讀取,並使用n變數來計算檔案中包含多少個美元符號 ($)。

另見