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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アバター
メカ
記事: 37
登録日時: 12年前

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

#1

投稿記事 by メカ » 12年前

ファイルの文字を読み込んで、その文字を画面に出力するプログラムですが、
出力される文字がわけの分からない文字になります。
自分の打ったファイルの読み込みのコードです。

コード:

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
ご回答お待ちしております。

アバター
HolyWings
記事: 12
登録日時: 14年前

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

#2

投稿記事 by HolyWings » 12年前

全角文字は一文字を表すのに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を指定します。

アバター
メカ
記事: 37
登録日時: 12年前

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

#3

投稿記事 by メカ » 12年前

ご回答有難う御座います。
只今、第二引数を128に変えて見たところ、前よりは良くなりましたが、出力結果が改善されません。
出力結果↓

听fh
S
LB

遉@@

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

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

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

#4

投稿記事 by みけCAT » 12年前

ファイルの文字コードは合っていますか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

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

#5

投稿記事 by softya(ソフト屋) » 12年前

勘ですがマルチバイト文字とUNICODEの問題な気もしますね。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
メカ
記事: 37
登録日時: 12年前

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

#6

投稿記事 by メカ » 12年前

文字コードが原因でした!
只今、文字コードを変換したら出来ました\(^o^)/
皆さんのお陰です!ありがとうございました(;^ω^)

閉鎖

“C言語何でも質問掲示板” へ戻る