C_日本語一文字を取得
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
int main(){
char tt[] = "山田太郎"; /* いわゆるマルチバイト文字 */
wchar_t wbuf[5] = { 0 }; /* ワイド文字列 : 日本語文字数 + 1 */
/* マルチバイトUTF-8 で漢字は3バイト,一文字取るなら 3 + 1 */
char str1[4] = { 0 };
/* 後でループを回すのに使うカウント */
int test = 0;
printf("MB_CUR_MAX = %d\n", MB_CUR_MAX);
setlocale(LC_ALL,"");
printf("MB_CUR_MAX = %d\n", MB_CUR_MAX);
/* マルチバイト文字列をワイド文字列に変換*/
mbstowcs(wbuf, tt, sizeof(tt));
printf("size of tt = %d\n", sizeof(tt));
/* ワイド文字列の先頭を一文字取得し,マルチバイト文字に変換. */
/* str1は必ず0で初期化しておく */
wctomb(str1,wbuf[0]);
printf("%ls\n",wbuf);
printf("%s\n",str1);
printf("number of bytes of str1 = %d\n",strlen(str1));
/* ループで一文字ずつ表示する*/
while(wbuf[test] != '\0'){
wctomb(str1,wbuf[test]);
printf("%s\n",str1);
test++;
}
return 0;
}
ここ を参照
添付ファイル:
setlocal.c 785件
[詳細]
Link: Programming(5550d)
Programming_C(6000d)
Last-modified: 2008-04-02 (水) 14:59:16 (6432d)