mblen.c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | /*
stdlib.h [mblen]
書式: int mblen(const char *s, size_t n)
機能: マルチバイト文字の長さを取得
引数: const char *s: マルチバイト文字
size_t n: 判定するバイト数
戻り値: 成功すると, マルチバイト文字のバイト数を返し,
失敗すると, -1 を返す.
*/
/*
MB_CUR_MAX: 現在のロケールの LC_CTYPE 設定で, マルチバイト文字 1 文字に
必要な最大バイト数.
MB_LEN_MAX: 全てのロケールで, マルチバイト文字 1 文字に必要な最大バイト
数.
*/
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
int main(void){
char *s = "テストAB";
int i = 0;
int len;
setlocale( LC_CTYPE, "jpn" );
while( s[i] != '\0' ){
len = mblen( &s[i], MB_CUR_MAX );
printf( "%x -- %x\n", s[i], len );
i += len;
}
return 0;
}
|
mblen.c の実行結果は:
[cactus:~/code_c/refer]% ./mblen
ffffffe3 -- 1
ffffff83 -- 1
ffffff86 -- 1
ffffffe3 -- 1
ffffff82 -- 1
ffffffb9 -- 1
ffffffe3 -- 1
ffffff83 -- 1
ffffff88 -- 1
41 -- 1
42 -- 1
mbtowc.c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | /*
stdlib.h [mbtowc]
書式: int mbtowc(wchar_t *wc, const char *mc, size_t n)
機能: マルチバイト文字からワイド文字に変換
引数: wchar_t *wc: 変換したワイド文字を格納するポインタ
const char *mc: 変換元のマルチバイト文字
size_t n: 変換するバイト数
戻り値: 成功すると, マルチバイト文字のバイト数を返し,
失敗すると, -1 を返す.
*/
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
int main(void){
char *mc = "あ";
wchar_t wc;
int len;
setlocale( LC_CTYPE, "jpn" );
len = mbtowc(&wc, mc, MB_CUR_MAX);
printf("マルチバイト文字長は: %d バイト\n", len);
printf("ワイド文字は: %lc\n", wc);
return 0;
}
|
mbtowc.c の実行結果は:
[cactus:~/code_c/refer]% ./mbtowc
マルチバイト文字長は: 1 バイト
ワイド文字は: ?
mbstowcs.c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | /*
stdlib.h [mbstowcs]
書式: int mbstowcs(wchar_t *ws, const char *ms, size_t n)
機能: マルチバイト文字列からワイド文字列に変換
引数: wchar_t *ws: 変換したワイド文字列を格納するポインタ
const char *ms: 変換元のマルチバイト文字列
size_t n: ワイド文字の文字数を指定
戻り値: 成功すると, 変換したワイド文字の文字数を返し,
失敗すると, -1 を返す.
*/
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
int main(void){
char *ms = "テストtestてすと";
wchar_t ws[100];
int len;
setlocale( LC_CTYPE, "jpn" );
len = mbstowcs(ws, ms, 100);
printf("ワイド文字数は: %d 文字\n", len);
printf("ワイド文字は: %ls\n", ws);
return 0;
}
|
mbstowcs.c の実行結果は:
[cactus:~/code_c/refer]% ./mbstowcs
ワイド文字数は: 22 文字
ワイド文字は: テストtestてすと
wctomb.c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | /*
stdlib.h [wctomb]
書式: int wctomb(char *s, wchar_t wc)
機能: ワイド文字からマルチバイトに変換
引数: char *s: 変換したマルチバイト文字を格納するポインタ
wchar_t wc: 変換元のワイド文字
戻り値: 成功すると, マルチバイト文字のバイド数を返し,
失敗すると, -1 を返す.
*/
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
int main(void){
wchar_t wc = L'あ';
char mc[2];
int len;
setlocale( LC_CTYPE, "jpn" );
len = wctomb(mc, wc);
printf("マルチバイト文字長は: %d バイト\n", len);
printf("マルチバイト文字はは: %c %c\n", mc[0], mc[1]);
return 0;
}
|
wctomb.c の実行結果は:
[cactus:~/code_c/refer]% ./wctomb
マルチバイト文字長は: -1 バイト
マルチバイト文字はは:
wcstombs.c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | /*
stdlib.h [wcstombs]
書式: int wcstombs(char *ms, const wchar_t *ws, size_t n)
機能: ワイド文字列からマルチバイト文字列に変換
引数: char *ms: 変換されたマルチバイト文字列を格納するポインタ
const wchar_t *ws: 変換元のワイド文字列
size_t n: マルチバイト文字のバイト数を指定
戻り値: 成功すると, 変換したマルチバイト文字列のバイト数を返し,
失敗すると, -1 を返す.
*/
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
int main(void){
wchar_t *ws = L"テストtestてすと";
char ms[100];
int len;
setlocale( LC_CTYPE, "jpn" );
len = wcstombs(ms, ws, 100);
printf("マルチバイト文字長は: %d バイト\n", len);
printf("マルチバイト文字はは: %s\n", ms);
return 0;
}
|
wcstombs.c の実行結果は:
[cactus:~/code_c/refer]% ./wcstombs
マルチバイト文字長は: -1 バイト
マルチバイト文字はは: ??_?