|
HOME > Linux Tips ( 目次 ) > Linux コマンド 一覧表 > w > wprintf - ライブラリコールの説明 wprintf - ライブラリコールの説明 - Linux コマンド集 一覧表名前wprintf, fwprintf, swprintf, vwprintf, vfwprintf, vswprintf - ワイド文字を フォーマットして出力する 書式
#include <stdio.h>
#include <wchar.h>
int wprintf(const wchar_t *format, ...);
int fwprintf(FILE *stream, const wchar_t *format, ...);
int swprintf(wchar_t *wcs, size_t maxlen,
const wchar_t *format, ...);
#include <stdarg.h>
int vwprintf(const wchar_t *format, va_list args);
int vfwprintf(FILE *stream, const wchar_t *format, va_list args);
int vswprintf(wchar_t *wcs, size_t maxlen,
const wchar_t *format, va_list args);
説明wprintf () ファミリーの関数は printf () ファミリーの関数の ワイド文字版である。これらはワイド文字をフォーマットして出力する。 wprintf () と vwprintf () 関数は stdout に出力を行なう。 stdout がバイト単位入出力であってはいけない。より詳しい説明は fwide () 関数を参照すること。 fwprintf () と vfwprintf () 関数は stream にワイド文字出力 を行なう。 stream がバイト単位入出力であってはいけない。 より詳しい説明は fwide () 関数を参照すること。 swprintf () と vswprintf () 関数はワイド文字の配列に ワイド文字出力を行なう。プログラマーは wcs に最低でも maxlen 文字のワイド文字を出力できる空きがあることを保証しなければ ならない。 これらの関数は printf (), vprintf (), fprintf (), vfprintf (), sprintf (), vsprintf () 関数に似ているが以下の 点で異っている。
返り値これらの関数は書き込まれたワイド文字の文字数を返す。 swprintf () と vswprintf () 関数の場合は 終端のナルワイド文字は含まない。エラーが起こった場合は -1 を返す。 準拠C99. 関連項目fprintf (3), fputwc (3), fwide (3), printf (3), snprintf (3), wscanf (3) 注意wprintf () 等の動作は現在のロケールの LC_CTYPE カテゴリに依存している。 format
文字列が ASCII 以外のワイド文字を含んでいる場合、
実行時のロケールの LC_CTYPE カテゴリがコンパイル時の LC_CTYPE カテゴリと
一致している場合にのみプログラムは正常に動作する。これは
wchar_t
の表現がロケールやプラットホームに依存していることに原因がある。
( GNU libc ではワイド文字として Unicode (ISO-10646) のコードポイントを
使用している。他のプラットホームではそうではない。同様に
ISO C99 の \unnnn 形式の汎用文字名称はこの問題を解決しない。)
このため国際化されたプログラムでは format
文字列を ASCII ワイド
文字のみにするか、実行時に国際化された方法で構成する必要がある
(例えば
gettext
()と
iconv
()や
mbstowcs
()を組み合わて使用する)。
|
|