ページ 11

dxlibのファイルの文字読み込みについて

Posted: 2013年3月12日(火) 02:14
by メカ
ファイルの文字を読み込んで、その文字を画面に出力するプログラムですが、
出力される文字がわけの分からない文字になります。
自分の打ったファイルの読み込みのコードです。

コード:

int f;
char Bun[5][128];
//読み込み
f=FileRead_open("01.txt");
for(int i=0;i<5;i=i+1)FileRead_gets(Bun[i],11+3,f);
FlieRead_close(f);
//出力
for(int i=0;i<5;i=i+1)DrawString(0,20*i,Bun[i],GetColor(255,255,255),TRUE);
↓01.txt

ファイル出力成功です。
ーーーーーーーーーーー
あかさたなはまやらわん
ABCDEFGHIJK
プログラムを終了します


全角文字ですが、このコードで読み込んで出力すると変な文字が出力されます。
この原因は何でしょうか?また改善方法があれば教えて下さいm(_ _)m
ご回答お待ちしております。

Re: dxlibのファイルの文字読み込みについて

Posted: 2013年3月12日(火) 07:06
by HolyWings
全角文字は一文字を表すのに2バイト使用します。

それから、
メカ さんが書きました:for(int i=0;i<5;i=i+1)FileRead_gets(Bun,11+3,f);


FileRead_gets 関数の使い方ですが、第2引数には読み込む文字数ではなく第1引数に指定した文字列を格納するメモリ領域の
大きさを指定します。
この場合は、
メカ さんが書きました:char Bun[5][128];

と宣言されているので、128を指定します。

Re: dxlibのファイルの文字読み込みについて

Posted: 2013年3月12日(火) 09:46
by メカ
ご回答有難う御座います。
只今、第二引数を128に変えて見たところ、前よりは良くなりましたが、出力結果が改善されません。
出力結果↓

听fh
S
LB

遉@@

どうすればなおるのでしょうか

Re: dxlibのファイルの文字読み込みについて

Posted: 2013年3月12日(火) 09:57
by みけCAT
ファイルの文字コードは合っていますか?

Re: dxlibのファイルの文字読み込みについて

Posted: 2013年3月12日(火) 10:14
by softya(ソフト屋)
勘ですがマルチバイト文字とUNICODEの問題な気もしますね。

Re: dxlibのファイルの文字読み込みについて

Posted: 2013年3月12日(火) 11:45
by メカ
文字コードが原因でした!
只今、文字コードを変換したら出来ました\(^o^)/
皆さんのお陰です!ありがとうございました(;^ω^)