こんばんは。
VisualStudio2010を使って、DXライブラリを用いたプログラムを作成しています。
void LoadText(const wchar_t* filename, Text* test1) {
fh = FileRead_open(filename);
while(FileRead_eof(fh) == 0) {
test1->str[j] = FileRead_getc(fh);
if(test1->str[j] == L'\n') {
test1->str[j] = L'\0';
j=0;
i++;
j++;
}
}
という感じに文章をロードする関数を作ったのですが、実際にmain関数からDrawFormatString関数で出力してみると、
先頭のstr[0][0]に"・"という文字が入っており、str[0][1]以降にファイル内容が格納されてしまいます。
2行目以降は、str[1][0]からファイル内容のとおりに格納できています。
なぜ[0][0]に1行目先頭文字が格納されないのか、教えてください。
お願いします。
ファイルからの読み込み時、文字列先頭に不明な文字
Re: ファイルからの読み込み時、文字列先頭に不明な文字
iとjの初期化がどこでされているのか、わかりませんでした。
最後に編集したユーザー AKIЯA on 2012年11月06日(火) 00:34 [ 編集 1 回目 ]
Re: ファイルからの読み込み時、文字列先頭に不明な文字
あれ、すいません。
今見直してみると、確かにわけのわからないコードですね^^;
手書きだったので書き間違えてしまいました…。ご指摘ありがとうございます。
本当はこう書きたかったです。
今見直してみると、確かにわけのわからないコードですね^^;
手書きだったので書き間違えてしまいました…。ご指摘ありがとうございます。
本当はこう書きたかったです。
int LoadText(const wchar_t* filename, Text* test1) {
int fh;
int i = 0;
int j = 0;
if((fh = FileRead_open(filename)) == 0) return -1;
while(FileRead_eof(fh) == 0) {
test1->str[i][j] = FileRead_getc(fh);
if(test1->str[i][j] = L'\n') {
test1->str[i][j] = L'\0';
j = 0;
i++;
} else j++;
}
FileRead_close(fh);
return 0;
}
Re: ファイルからの読み込み時、文字列先頭に不明な文字
すいません。まだコンパイル通らないと思うのでコンパイル通るものをお願いします。
その処理をするならば、今は1文字ずつ格納していると思いますがFileRead_getsで1行読み込んでやるといいかもしれません。
その処理をするならば、今は1文字ずつ格納していると思いますがFileRead_getsで1行読み込んでやるといいかもしれません。
最後に編集したユーザー AKIЯA on 2012年11月06日(火) 00:44 [ 編集 2 回目 ]
Re: ファイルからの読み込み時、文字列先頭に不明な文字
ファイルの先頭だけということなら、BOMではないでしょうか・・?
http://ja.wikipedia.org/wiki/%E3%83%90% ... C%E3%82%AF
※メモ帳で作ったUnicode(UTF-16)テキストファイルにはBOMが付いてたとおもいます。
http://ja.wikipedia.org/wiki/%E3%83%90% ... C%E3%82%AF
※メモ帳で作ったUnicode(UTF-16)テキストファイルにはBOMが付いてたとおもいます。
Re: ファイルからの読み込み時、文字列先頭に不明な文字
BOMが原因で正しかったです。
Unicodeで試験的に組んでいたもので、そこは盲点でした…。
ずっと悩んでたので、解決して良かったです。
Unicodeで試験的に組んでいたもので、そこは盲点でした…。
ずっと悩んでたので、解決して良かったです。