DxLibのFileRead_gets関数について

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

DxLibのFileRead_gets関数について

#1

投稿記事 by aridai » 9年前

以前、私が別のトピックで助けてもらった時に
以下のようなコードをいただきました。

コード:

	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のリファレンスではこの関数によって
テキストファイルから一行読み込むことができると書かれていましたが、
テキストファイルの何行目を読み込むのかを指定する引数もなかったので
その仕組みを知りたいです。

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

アバター
h2so5
副管理人
記事: 2212
登録日時: 13年前
住所: 東京
連絡を取る:

Re: DxLibのFileRead_gets関数について

#2

投稿記事 by h2so5 » 9年前

FileRead_getsが取得するのはまだ読んでいない最初の一行です。1回め呼んだ時に1行目、2回め呼んだ時に2行目...となります。
どこまで読んだかはhandleと関連付けられて内部的に記憶されています。

aridai
記事: 34
登録日時: 9年前

Re: DxLibのFileRead_gets関数について

#3

投稿記事 by aridai » 9年前

返信ありがとうございます。
ちなみに、テキストファイルを必ずANSIの文字コードで保存しないと行けないのですか。

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

Re: DxLibのFileRead_gets関数について

#4

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

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

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

【補足】
aridaiさんの過去の質問で解決チェックを付け忘れているようなのでお願いします。
投稿時に解決!のチェックをONにして投稿してください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

aridai
記事: 34
登録日時: 9年前

Re: DxLibのFileRead_gets関数について

#5

投稿記事 by aridai » 9年前

>>softyaさん
自分はVC++なので、シフトJISですね。
解決の件 忘れていました。ご指摘ありがとうございます。

閉鎖

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