fputws() — ワイド文字ストリングを書き込む

形式

#include <wchar.h>
#include <stdio.h>
int fputws(const wchar_t *wcs, FILE *stream);

言語レベル

XPG4

スレッド・セーフ

はい

ロケール依存

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

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

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

ワイド文字関数

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

説明

fputws() 関数は、ワイド文字ストリング wcsストリームに書き込みます。 最後の NULL ワイド文字は書き込みません。

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

注: 同じストリームに対する後続の操作の間に現行ロケールが変更されると、未定義の結果が生じる可能性があります。

戻り値

正常に実行された場合、 fputws() 関数は負でない値を返します。 書き込みエラーが発生すると、ストリームのエラーインジケータが設定され、fputws()関数は-1を返します。 ワイド文字をマルチバイト文字に変換する際にエンコードエラーが発生した場合、fputws() 関数は errno に EILSEQ をセットし、-1 を返します。

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

この例では、ファイルをオープンし、 fgetws() 関数を使用してワイド文字ストリングをファイルに書き込みます。
#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>
#include <errno.h>
 
int main(void)
{
   FILE    *stream;
   wchar_t *wcs = L"This test string should not return -1";
 
   if (NULL == (stream = fopen("fputws.out", "w"))) {
      printf("Unable to open: \"fputws.out\".\n");
      exit(1);
   }
 
   errno = 0;
   if (EOF == fputws(wcs, stream)) {
      printf("Unable to complete fputws() function.\n");
      if (EILSEQ == errno)
         printf("An invalid wide character was encountered.\n");
      exit(1);
   }
   fclose(stream);
   return 0;
 
   /************************************************************
      The output file fputws.out should contain:
 
      This test string should not return -1
   ************************************************************/
}

関連情報