名稱空間
變體
操作

fgetwc, getwc

來自 cppreference.com
< c‎ | io
 
 
檔案輸入/輸出
型別和物件
        
函式
檔案訪問
(C95)
非格式化輸入/輸出
fgetwcgetwc
(C95)(C95)
(C95)
(C95)(C95)
(C95)
(C95)

格式化輸入
 
在標頭檔案 <wchar.h> 中定義
wint_t fgetwc( FILE *stream );
(自 C95 起)
wint_t getwc( FILE *stream );
(自 C95 起)

從給定的輸入流中讀取下一個寬字元。getwc() 可以作為宏實現,並且可能會多次評估 stream

目錄

[編輯] 引數

stream - 從中讀取寬字元的流

[編輯] 返回值

流中的下一個寬字元,或失敗時為 WEOF

如果失敗是由檔案結束條件引起的,則額外設定 stream 上的 *eof* 指示器(參閱 feof())。如果失敗是由其他錯誤引起的,則設定 stream 上的 *error* 指示器(參閱 ferror())。

如果發生編碼錯誤,則額外設定 errnoEILSEQ

[編輯] 示例

#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>
#include <errno.h>
#include <locale.h>
 
int main(void)
{
    setlocale(LC_ALL, "en_US.utf8");
    FILE *fp = fopen("fgetwc.dat", "w");
    if(!fp) {
        perror("Can't open file for writing");
        return EXIT_FAILURE;
    }
    fputs("кошка\n", fp);
    fclose(fp);
 
    fp = fopen("fgetwc.dat", "r");
    if(!fp) {
        perror("Can't open file for reading");
        return EXIT_FAILURE;
    }
    wint_t wc;
    errno = 0;
    while ((wc = fgetwc(fp)) != WEOF)
        putwchar(wc);
 
    if (ferror(fp)) {
        if (errno == EILSEQ)
            puts("Character encoding error while reading.");
        else
            puts("I/O error when reading");
    } else if (feof(fp))
        puts("End of file reached successfully");
 
    fclose(fp);
}

輸出

кошка

[編輯] 參考資料

  • C17 標準 (ISO/IEC 9899:2018)
  • 7.29.3.1 fgetwc 函式 (p: 307-308)
  • 7.29.3.6 getwc 函式 (p: 309)
  • C11 標準 (ISO/IEC 9899:2011)
  • 7.29.3.1 fgetwc 函式 (p: 421-422)
  • 7.29.3.6 getwc 函式 (p: 424)
  • C99 標準 (ISO/IEC 9899:1999)
  • 7.24.3.1 fgetwc 函式 (p: 367)
  • 7.24.3.6 getwc 函式 (p: 369)

[編輯] 另請參閱

從檔案流中獲取一個字元
(函式) [編輯]
(C95)
從檔案流中獲取一個寬字串
(函式) [編輯]
向檔案流寫入一個寬字元
(函式) [編輯]
將一個寬字元放回檔案流中
(函式) [編輯]
C++ 文件 用於 fgetwc