C_日本語一文字を取得 の変更点 - アールメカブ

アールメカブ


C_日本語一文字を取得 の変更点


[[Programming]]

 #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;
 }

[[ここ:http://f4.aaa.livedoor.jp/~pointc/log768.html]] を参照