mbtowc
stdlib.h:インデックス への移動
ヘッダーファイル
stdlib.h
カテゴリ
変換ルーチン,メモリおよび文字列操作ルーチン
プロトタイプ
int mbtowc(wchar_t *pwc, const char *s, size_t n);
説明
マルチバイト文字を wchar_t コードに変換します。
s が NULL でない場合,mbtowc は,s が指すマルチバイト文字を構成するバイト数を判定します。次に,mbtowc は,そのマルチバイト文字に対応する wchar_t 型の値を判定します。マルチバイト文字に一致する wchar_t が見つかり,pwc が NULL でない場合は,pwc が指す配列に wchar_t 型の値が格納されます。最大 n 文字までが確認されます。
戻り値
s が無効なマルチバイト文字を指す場合は,-1 が返されます。s がヌル文字を指す場合は,0 が返されます。その他の場合,mbtowc は,変換後のマルチバイト文字を構成するバイト数を返します。
戻り値が MB_CUR_MAX または n の値を超えることはありません。
例
#include <stdlib.h>
#include<stdio.h>
void main(void)
{
int x;
char *mbchar = (char *)calloc(1, sizeof( char));
wchar_t wchar = L'a';
wchar_t *pwcnull = NULL;
wchar_t *pwchar = (wchar_t *)calloc(1, sizeof( wchar_t ));
printf ("Convert a wide character to multibyte character:\n");
x = wctomb( mbchar, wchar);
printf( "\tCharacters converted: %u\n", x);
printf( "\tMultibyte character: %x\n\n", mbchar);
printf ("Convert multibyte character back to a wide character:\n");
x = mbtowc( pwchar, mbchar, MB_CUR_MAX );
printf( "\tBytes converted: %u\n", x);
printf( "\tWide character: %x\n\n", pwchar);
printf ("Atempt to convert when target is NULL\n" );
printf (" returns the length of the multibyte character:\n" );
x = mbtowc (pwcnull, mbchar, MB_CUR_MAX );
printf ( "\tlength of multibyte character:%u\n\n", x );
printf ("Attempt to convert a NULL pointer to a" );
printf (" wide character:\n" );
mbchar = NULL;
x = mbtowc (pwchar, mbchar, MB_CUR_MAX);
printf( "\tBytes converted: %u\n", x );
}
移植性
POSIX | Win32 | ANSI C | ANSI C++ |
---|---|---|---|
+ |
+ |
+ |
+ |