fgetwc, getwc
From cppreference.com
| ヘッダー <wchar.h> で定義 |
||
| wint_t fgetwc( FILE *stream ); |
(C95 以降) | |
| wint_t getwc( FILE *stream ); |
(C95 以降) | |
指定された入力ストリームから次のワイド文字を読み取ります。getwc() はマクロとして実装される場合があり、stream を複数回評価する可能性があります。
目次 |
[編集] パラメータ
| stream | - | ワイド文字を読み取る対象 |
[編集] 戻り値
ストリームからの次のワイド文字、または失敗時には WEOF。
失敗がファイル終端条件によって引き起こされた場合、 additionally、stream 上の eof インジケータ(feof() を参照)を設定します。失敗がその他のエラーによって引き起こされた場合、 additionally、stream 上の error インジケータ(ferror() を参照)を設定します。
エンコーディングエラーが発生した場合、 additionally、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 The fgetwc function (p: 307-308)
- 7.29.3.6 The getwc function (p: 309)
- C11標準 (ISO/IEC 9899:2011)
- 7.29.3.1 The fgetwc function (p: 421-422)
- 7.29.3.6 The getwc function (p: 424)
- C99標準 (ISO/IEC 9899:1999)
- 7.24.3.1 The fgetwc function (p: 367)
- 7.24.3.6 The getwc function (p: 369)
[編集] 関連項目
| ファイルストリームから1文字取得する (関数) | |
| (C95) |
ファイルストリームからワイド文字列を取得する (関数) |
| (C95) |
ファイルストリームに1ワイド文字を書き込む (関数) |
| (C95) |
ファイルストリームに1ワイド文字を戻す (関数) |
| fgetwc の C++ ドキュメント
| |