ページ 11

DxLibのFileRead_gets関数について

Posted: 2015年3月11日(水) 15:24
by aridai
以前、私が別のトピックで助けてもらった時に
以下のようなコードをいただきました。

コード:

	char buf[256];
	sprintf(buf, "res\\mapdata\\stage%d.txt", program.stagenum); // ファイル名の取得
	int handle = FileRead_open(buf, FALSE); // ファイルの展開

	for (int y = 0; y < 15; y++)
	{
		char map_buffer[512] = { 0 };

		FileRead_gets(map_buffer, sizeof(map_buffer), handle);

		for (int x = 0; x < 200; x++)
		{
			stagemapdata[y][x] = map_buffer[x];
		}
	}
	FileRead_close(handle);
ここで、質問なんですが

コード:

FileRead_gets(map_buffer, sizeof(map_buffer), handle);
で取得する文字列はどの一行を取得しているのでしょうか。
DxLibのリファレンスではこの関数によって
テキストファイルから一行読み込むことができると書かれていましたが、
テキストファイルの何行目を読み込むのかを指定する引数もなかったので
その仕組みを知りたいです。

説明がわかりにくてすみません。

Re: DxLibのFileRead_gets関数について

Posted: 2015年3月11日(水) 15:31
by h2so5
FileRead_getsが取得するのはまだ読んでいない最初の一行です。1回め呼んだ時に1行目、2回め呼んだ時に2行目...となります。
どこまで読んだかはhandleと関連付けられて内部的に記憶されています。

Re: DxLibのFileRead_gets関数について

Posted: 2015年3月11日(水) 15:34
by aridai
返信ありがとうございます。
ちなみに、テキストファイルを必ずANSIの文字コードで保存しないと行けないのですか。

Re: DxLibのFileRead_gets関数について

Posted: 2015年3月11日(水) 16:04
by softya(ソフト屋)
自分で何とか出来るなら文字コードは変更できます。
VC++の場合は、文字コードはシフトJISかUNICODE(UTF-16)を選んだほうがややこしくないです。
一番簡単なのはマルチバイト文字であるシフトJISの選択です。

ANSIコードだと思われているようですが日本語版ならシフトJISですね。

【補足】
aridaiさんの過去の質問で解決チェックを付け忘れているようなのでお願いします。
投稿時に解決!のチェックをONにして投稿してください。

Re: DxLibのFileRead_gets関数について

Posted: 2015年3月11日(水) 16:42
by aridai
>>softyaさん
自分はVC++なので、シフトJISですね。
解決の件 忘れていました。ご指摘ありがとうございます。