トップページ > キーワード検索 > mbtowc()
C言語規格
C言語(その他)
プログラム
その他
mbtowc()
機能 多バイト文字をワイド文字に変換する。
地域(LC_CTYPE部門)によって結果は異なる
定義 #include <stdlib.h>

int mbtowc( wchar_t * pwc, const char * s, size_t n );

※C99規格では以下の定義となる
int mbtowc( wchar_t * restrict pwc, const char * restrict s, size_t n );
引数
pwc変換したワイド文字の格納先
s変換する多バイト文字
n検査する一文字の最大バイト数
戻り値 引数sが正しい多バイト文字を形成する場合、多バイト文字を構成するバイト数を返す。(MB_CUR_MAXの値を超える事はない)
正しい多バイト文字を形成しない場合は、-1を返す。
実装例
#include <stdlib.h>
#include <stdio.h>
#include <locale.h>

int main(void)
{
    wchar_t wc;
    int ret;
    
    /* Cロケール環境 */
    printf("locale='%s'\n", setlocale(LC_CTYPE, NULL));
    ret = mbtowc(&wc, "a", MB_CUR_MAX);    /* 1バイト文字 */
    printf("a =%#x\n", wc);
    ret = mbtowc(&wc, "あ", MB_CUR_MAX);   /* 2バイト文字 */
    printf("あ=%#x\n", wc);
    
    /* 日本ロケール環境 */
    printf("locale='%s'\n", setlocale(LC_CTYPE, "Japanese"));
    ret = mbtowc(&wc, "a", MB_CUR_MAX);    /* 1バイト文字 */
    printf("a =%#x\n", wc);
    ret = mbtowc(&wc, "あ", MB_CUR_MAX);   /* 2バイト文字 */
    printf("あ=%#x\n", wc);
    
    return 0;
}
実行結果
locale='C'
a =0x61
あ=0x82
locale='Japanese_Japan.932'
a =0x61
あ=0x3042





inserted by FC2 system