fwprintf()、swprintf()、wprintf() - ワイド文字のフォーマット設定および書き込み

標準

標準/拡張機能 C/C++ 依存項目

ISO C 改訂
C99
Single UNIX Specification、バージョン 3
Language Environment

両方  

形式

XPG4:
#include <wchar.h>

int fwprintf(FILE * __restrict__ stream, const wchar_t * __restrict__ format, …);
int swprintf(wchar_t * __restrict__ wcs, size_t n, const wchar_t * __restrict__ format, …);
int wprintf(const wchar_t * __restrict__ format, …);

#define _OPEN_SYS_UNLOCKED_EXT 1
#include <wchar.h>

int fwprintf_unlocked(FILE * __restrict__ stream, const wchar_t * __restrict__ format, …);
int wprintf_unlocked(const wchar_t * __restrict__ format, …);
XPG4:
#define _XOPEN_SOURCE
#define _MSE_PROTOS
#include <wchar.h>

int fwprintf(FILE * __restrict__ stream, const wchar_t * __restrict__ format, …);
int swprintf(wchar_t *__restrict__ wcs, size_t n, const wchar_t * __restrict__ format, …);
int wprintf(const wchar_t * __restrict__ format, …);

#define _OPEN_SYS_UNLOCKED_EXT 1
#include <wchar.h>

int fwprintf_unlocked(FILE * __restrict__ stream, const wchar_t * __restrict__ format, …);
int wprintf_unlocked(const wchar_t * __restrict__ format, …);

機能説明

fwprintf()、swprintf()、および wprintf() の各関数は、次に示す点を除いて、それぞれ fprintf()、sprintf()、および printf() と同等です。
  • swprintf() の場合、引数 wcs は char 型の配列ではなく、生成された出力が書き込まれる wchar_t 型の配列を指定します。
  • 引数 format は、char 型の配列ではなく、後続の引数が出力時にどのように変換されるかを示す wchar_t 型の配列を指定します。
  • l 接頭部が付いていない %c は、mbtowc() が呼び出された場合と同様に、int arg が wchar_t に変換された後で書き込まれることを意味します。
  • l 接頭部がある %c は、wint_twchar_t に変換され てから書き込まれることを意味します。
  • l 接頭部がない %s は、マルチバイトの文字シーケンスを含む文字配列が、wchar_t の配列に変換されてから書き込まれることを意味します。mbrtowc() が繰り返し呼び出されたときのように、変換が行われます。
  • l 接頭部がある %s は、wchar_t の配列が 書き込まれることを意味します。精度に、より短い出力が指定されていない限り、配列は終了 NULL 文字に達するまで (終了 NULL 文字は含まれません) 書き込まれます。

swprintf() の場合は、NULL ワイド文字が、書き込まれるワイド文字の末尾に書き込まれます。NULL ワイド文字は、戻りの合計の一部として数えられません。オーバーラップした オブジェクト間でコピーが行われた場合には、動作は未定義です。

fwprintf_unlocked() ファミリーは、スレッド・セーフでないことを 除いて、機能的に fwprintf() ファミリーと等価です。この関数をマルチスレッドのアプリケーション内で安全に使用できるのは、 flockfile() 関数または ftrylockfile() 関数のどちらかへの呼び出しが成功した後のように、 呼び出しスレッドが (FILE*) オブジェクトを所有している間に、この関数を呼び出す場合だけです。

XPG4 の特殊な動作: プログラム・ソース・ファイル内で、wchar ヘッダーをインクルードするステートメントより前に、XPG4 の動作を指定するフィーチャー・テスト・マクロを定義した場合には、_MSE_PROTOS フィーチャー・テスト・マクロも定義して、プログラムのコンパイル時に使用可能な wchar ヘッダーに、fwprintf()、swprintf()、または wprintf() 関数の宣言を行う必要があります。 XPG4 と他のフィーチャー・テスト・マクロのリストについては、表 1 を参照してください。

注: fwprintf() 関数と wprintf() 関数は、拡張 ASCII の拡張機能のレベルに依存します。詳細は、拡張 ASCII サポートを参照してください。

戻り値

正常に実行された場合、fwprintf()、wprintf()、および swprintf() は、終了 NULL ワイド文字をカウントに入れずに、書き込まれたワイド文字の数を戻します。

正常に実行されなかった場合は、負の値が戻されます。

n 文字以上のワイド文字の書き込みが要求された場合、swprintf() は負の値を戻し、errno を設定してエラーを示します。

関連情報