C_日本語一文字を取得 - RとLinuxと...

RとLinuxと...


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

ここ を参照

 
添付ファイル: filesetlocal.c 346件 [詳細]
 
Link: Programming(3126d) Programming_C(3577d)
Last-modified: 2008-04-02 (水) 14:59:16 (4009d)