fgetwc, getwc
來自 cppreference.com
在標頭檔案 <wchar.h> 中定義 |
||
wint_t fgetwc( FILE *stream ); |
(自 C95 起) | |
wint_t getwc( FILE *stream ); |
(自 C95 起) | |
從給定的輸入流中讀取下一個寬字元。getwc() 可以作為宏實現,並且可能會多次評估 stream
。
目錄 |
[編輯] 引數
stream | - | 從中讀取寬字元的流 |
[編輯] 返回值
流中的下一個寬字元,或失敗時為 WEOF。
如果失敗是由檔案結束條件引起的,則額外設定 stream
上的 *eof* 指示器(參閱 feof())。如果失敗是由其他錯誤引起的,則設定 stream
上的 *error* 指示器(參閱 ferror())。
如果發生編碼錯誤,則額外設定 errno 為 EILSEQ
。
[編輯] 示例
執行此程式碼
#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) |
從檔案流中獲取一個寬字串 (函式) |
(C95) |
向檔案流寫入一個寬字元 (函式) |
(C95) |
將一個寬字元放回檔案流中 (函式) |
C++ 文件 用於 fgetwc
|