fputwc() — ワイド文字を書き込む
形式
#include <wchar.h>
#include <stdio.h>
wint_t fputwc(wint_t wc, FILE *stream);言語レベル
ANSI
スレッド・セーフ
はい
ロケール依存
この関数の振る舞いは、現行ロケールの LC_CTYPE カテゴリーの影響を受ける可能性があります。 また、この振る舞いは、LOCALETYPE(*LOCALEUCS2) または LOCALETYPE(*LOCALEUTF) がコンパイル・コマンドに対して指定されている場合は、現行ロケールの LC_UNI_CTYPE カテゴリーにも影響を受ける可能性があります。 この関数は、コンパイル・コマンドに対して LOCALETYPE(*CLD) が指定されている場合には使用できません。 詳しくは、 CCSID とロケールについてを参照してください。
統合ファイル・システム・インターフェース
この関数は、コンパイル・コマンドに対して SYSIFCOPT(*NOIFSIO) が指定されている場合には使用できません。
ワイド文字関数
詳しくは、 ワイド文字 を参照してください。
説明
fputwc() 関数は、ワイド文字 wc を、 stream が指す出力ストリームの現在位置に書き込みます。 また、ファイル位置標識を正しく進めます。 ファイルが位置指定要求をサポートできない場合、またはストリームが追加モードでオープンされた場合は、文字はストリームへ追加されます。
同じストリーム上で fputwc() 関数とともに非ワイド文字関数を使用すると、未定義の動作になります。 fputwc() 関数を呼び出した後、ストリームの読み取り関数を呼び出す前に、バッファーを削除するか、ストリーム・ポインターの位置を変更してください。 ストリームから読み取った後、EOF に達していない限り、 fputwc() 関数を呼び出す前に、バッファーを削除するか、ストリーム・ポインターの位置を変更してください。
戻り値
fputwc() 関数は、書き込まれたワイド文字を戻します。 書き込みエラーが発生すると、ストリームのエラー標識が設定され、 fputwc() 関数は WEOF を戻します。 ワイド文字からマルチバイト文字への変換中にエンコード・エラーが発生した場合、 fputwc() は errno に EILSEQ を設定し、WEOF を戻します。
putwc()の errno 値については、 fputc ()-文字の書き込みを参照してください。
例
fputwc() 関数を使用してワイド文字をファイルに書き込みます。#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>
#include <errno.h>
int main(void)
{
FILE *stream;
wchar_t *wcs = L"A character string.";
int i;
if (NULL == (stream = fopen("fputwc.out", "w")))
{
printf("Unable to open: \"fputwc.out\".\n");
exit(1);
}
for (i = 0; wcs[i] != L'\0'; i++) {
errno = 0;
if (WEOF == fputwc(wcs[i], stream)) {
printf("Unable to fputwc() the wide character.\n"
"wcs[%d] = 0x%.4lx\n", i, wcs[i]);
if (EILSEQ == errno)
printf("An invalid wide character was encountered.\n");
exit(1);
}
}
fclose(stream);
return 0;
/***************************************************************
The output file fputwc.out should contain:
A character string.
***************************************************************/
}