C_N-gram のバックアップ(No.1) - アールメカブ

アールメカブ


C_N-gram のバックアップ(No.1)


Programming

とりあえず,こんなプログラムを書いてみた

#include <stdio.h>
#include <stdlib.h>
#include <locale>
using namespace std;

int main(int argc, char *argv[]){
 char * input;
 wchar_t * wbuf[1240];
/* ワイド文字列 : 日本語文字数  + 1 */
/* マルチバイトUTF-8 で漢字は3バイト,一文字取るなら 3 + 1 */
 char str1[4] = { 0 };
 char str2[4] = { 0 };
 char gram2[7]  = { 0 };
 int test = 0;
 FILE *fp;
 char * p;
 setlocale(LC_ALL,"");
 printf("file = %s\n", argv[1]);

 if((fp = fopen(argv[1], "r")) == NULL){
    printf("file not found\n");
	return(1);
    }else{
	while(!feof(fp)){
	  if(fgets(input, 1024, fp) != NULL){
		 p = strchr( input, '\n' );
		 /* 改行文字があった場合 */
		 if ( p != NULL )
		{
		  /* 改行文字を終端文字に置き換える */
		 *p = '\0';
		}
 
	printf("size of input= %d\n", sizeof(input));
	printf("strlen of input= %d\n", strlen(input));  
	if(strlen(input) > 0){
	   printf("%s\n", input);
	   mbstowcs(wbuf, input,  strlen(input));
         /* マルチバイト文字列をワイド文字列に変換*/
	   printf("strlen of wbuf = %d\n", wcslen(wbuf));  
          while(test < wcslen(wbuf)  ){					
		wctomb(str1,wbuf[test]);
		wctomb(str2,wbuf[test+1]);
		sprintf(gram2, "%s%s",str1, str2);
		//	printf(" %s %s \n", str1, str2);
		printf("%s\n",gram2);
		// 		printf("%ls\n",wbuf);
		test++;
		}
	    }// while_2
        }// _if 
     } //_while_1
   }//_else
}