fgetwc, getwc
ja.cppreference.net より
| ヘッダで定義 <wchar.h>
|
||
wint_t fgetwc( FILE* stream );
|
(C95 以降) | |
wint_t getwc( FILE* stream );
|
(C95 以降) | |
指定された入力ストリームから次のワイド文字を読み取ります。getwc()はマクロとして実装される可能性があり、streamを複数回評価する場合があります。
引数
| stream | - | ワイド文字を読み取るストリーム |
戻り値
ストリームからの次のワイド文字、または失敗した場合はWEOF。
エンド・オブ・ファイル状態による失敗の場合、さらにeof標識を設定します (feof()を参照) をstreamに設定します。他のエラーによる失敗の場合、error標識を設定します (ferror()を参照) をstreamに設定します。
符号化エラーが発生した場合、さらにerrnoにEILSEQを設定します。
例
このコードを実行
#include <errno.h>
#include <locale.h>
#include <stdio.h>
#include <stdlib.h>
#include <wchar.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);
}
出力例:
кот
参考文献
- C23 規格 (ISO/IEC 9899:2024):
- 7.29.3.1 fgetwc 関数 (p: TBD)
- 7.29.3.6 getwc 関数 (p: TBD)
- 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
| |