putwc() — ワイド文字の書き込み

形式

     #include <stdio.h>
     #include <wchar.h>
     wint_t putwc(wint_t wc, FILE *stream);

言語レベル

ANSI

スレッド・セーフ

はい

ロケール依存

この関数の振る舞いは、現行ロケールの LC_CTYPE カテゴリーの影響を受ける可能性があります。 この振る舞いは、LOCALETYPE(*LOCALEUCS2) または LOCALETYPE(*LOCALEUTF) をコンパイル・コマンドで指定した場合も、現行ロケールの LC_UNI_CTYPE カテゴリーによって影響を受ける可能性があります。 この関数は、コンパイル・コマンドに対して LOCALETYPE(*CLD) が指定されている場合には使用できません。 詳しくは、 CCSID とロケールについてを参照してください。

統合ファイル・システム・インターフェース

この関数は、コンパイル・コマンドに対して SYSIFCOPT(*NOIFSIO) が指定されている場合には使用できません。

ワイド文字関数

詳しくは、 ワイド文字 を参照してください。

説明

putwc() 関数は、ワイド文字 wc をストリームの現在位置に書き込みます。 また、ストリーム用のファイル位置標識を適切に先に進めます。 putwc() 関数は fputwc() 関数と同等ですが、一部のプラットフォームでは putwc() をマクロとして実装しています。 したがって、移植性のために、 putwc() に対するストリーム引数は、副次作用のある式であってはなりません。

同じストリーム上で非ワイド文字関数を putwc() 関数と共に使用すると、未定義の動作になります。 putwc() 関数を呼び出した後、EOF に達していない限り、ストリームの書き込み関数を呼び出す前に、バッファーをフラッシュするか、ストリーム・ポインターを位置変更してください。 ストリームに対する書き込み操作の後、 putwc() 関数を呼び出す前に、バッファーをフラッシュするか、ストリーム・ポインターを位置変更してください。

戻り値

putwc() 関数は、書き込まれたワイド文字を戻します。 書き込みエラーが発生すると、ストリームのエラー標識が設定され、WEOF が戻ります。 ワイド文字がマルチバイト文字に変換されるときにエンコード・エラーが発生すると、 putwc() 関数は errno に EILSEQ を設定し、WEOF を戻します。

putwc()の errno 値については、 fputc ()-文字の書き込みを参照してください。

以下の例では、 putwc() 関数を使用して、 wcs 内のワイド文字をマルチバイト文字に変換し、それらをファイル putwc.outに書き込みます。
#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("putwc.out", "w"))) {
      printf("Unable to open: \"putwc.out\".\n");
      exit(1);
   }
 
   for (i = 0; wcs[i] != L'\0'; i++) {
      errno = 0;
      if (WEOF == putwc(wcs[i], stream)) {
         printf("Unable to putwc() the wide character.\n"
                "wcs[%d] = 0x%lx\n", i, wcs[i]);
         if (EILSEQ == errno)
            printf("An invalid wide character was encountered.\n");
         exit(1);
      }
   }
   fclose(stream);
   return 0;
 
   /***************************************************************
      The output file putwc.out should contain :
 
      A character string.
   ***************************************************************/
}

関連情報