ファイルからの読み込み時、文字列先頭に不明な文字

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
タケ

ファイルからの読み込み時、文字列先頭に不明な文字

#1

投稿記事 by タケ » 13年前

こんばんは。
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: ファイルからの読み込み時、文字列先頭に不明な文字

#2

投稿記事 by タケ » 13年前

申し訳ありません。

コード:

でくくるのを忘れていました。
書き直しました。

[code]
void LoadText(const wchar_t* filename, Text* test1) {
  fh = FileRead_open(filename);
  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++;
      j++;
    }
  }
}

AKIЯA
記事: 58
登録日時: 13年前

Re: ファイルからの読み込み時、文字列先頭に不明な文字

#3

投稿記事 by AKIЯA » 13年前

iとjの初期化がどこでされているのか、わかりませんでした。
最後に編集したユーザー AKIЯA on 2012年11月06日(火) 00:34 [ 編集 1 回目 ]

タケ

Re: ファイルからの読み込み時、文字列先頭に不明な文字

#4

投稿記事 by タケ » 13年前

あれ、すいません。
今見直してみると、確かにわけのわからないコードですね^^;
手書きだったので書き間違えてしまいました…。ご指摘ありがとうございます。
本当はこう書きたかったです。

コード:

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

AKIЯA
記事: 58
登録日時: 13年前

Re: ファイルからの読み込み時、文字列先頭に不明な文字

#5

投稿記事 by AKIЯA » 13年前

すいません。まだコンパイル通らないと思うのでコンパイル通るものをお願いします。
その処理をするならば、今は1文字ずつ格納していると思いますがFileRead_getsで1行読み込んでやるといいかもしれません。
最後に編集したユーザー AKIЯA on 2012年11月06日(火) 00:44 [ 編集 2 回目 ]

たろ

Re: ファイルからの読み込み時、文字列先頭に不明な文字

#6

投稿記事 by たろ » 13年前

ファイルの先頭だけということなら、BOMではないでしょうか・・?
http://ja.wikipedia.org/wiki/%E3%83%90% ... C%E3%82%AF

※メモ帳で作ったUnicode(UTF-16)テキストファイルにはBOMが付いてたとおもいます。

タケ

Re: ファイルからの読み込み時、文字列先頭に不明な文字

#7

投稿記事 by タケ » 13年前

BOMが原因で正しかったです。
Unicodeで試験的に組んでいたもので、そこは盲点でした…。
ずっと悩んでたので、解決して良かったです。

閉鎖

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