ページ 11

すっごい初歩的なことですがデータセーブロード

Posted: 2011年11月01日(火) 10:43
by 史上最悪のデスペナ
C++でテキスト形式ではセーブロードが出来ます。
例えば、

コード:

struct sPCStatous
{
	int Lv;
	int Power;
	int Attack;
	int Speed;
	int Hit;
	int Luck;
	int StatousPoint;
	int SkillPoint;
	int MagicPoint;
	int MagicType[8];
};
というのをセーブするときに

コード:

FILE *sf;
	sf = fopen("data\\data0.ESO","w");

	fprintf( sf, "%d\n", sPCStatous.Lv);
	fprintf( sf, "%d\n", sPCStatous.Power);
	fprintf( sf, "%d\n", sPCStatous.Attack);

/*・・・・・・・・・・・・・・・・・中略・・・・・・・・・・・・・・・・・・・*/

	fclose(sf);
としています。
そろそろバイナリ形式で保存できるようになりたいのですが、ネットで調べてもよく分かりません。例を書いていただけると嬉しいです

それと、こんな感じ
save(sf, sPCStatous)
に構造体をいっぺんにセーブする方法はありますでしょうか?

Re: すっごい初歩的なことですがデータセーブロード

Posted: 2011年11月01日(火) 10:45
by へろりくしょん
fwrite() 関数があります。

#include <stdio.h>
size_t fwrite(const void *buf, size_t size, size_t n, FILE *fp);

Re: すっごい初歩的なことですがデータセーブロード

Posted: 2011年11月01日(火) 11:16
by 史上最悪のデスペナ
fwrite(const void *buf, size_t size, size_t n, FILE *fp);
の存在は知っていましたが”size_t size, size_t n”の部分が分からなかったんですよね。

調べてみたらここのTopicNo.3

例2:
struct coord {
int x;
int y;
};
coord p;
fwrite(&p, sizeof(coord), 1, f); // 構造体をバイナリ形式で1個出力する

とありました。

例1:
fwrite("abc", sizeof(char), 3, f); // 文字を3個出力する
というようなのしか今まで見たことなかったので、どうすればいいのか全然わかりませんでした。

う・・・・・こんなに簡単だったとは。なんでこんなに悩んでたんだろう・・・・・・

Re: すっごい初歩的なことですがデータセーブロード

Posted: 2011年11月02日(水) 00:27
by Dixq (管理人)
それでしたらゲームプログラミングの館の
http://dixq.net/g/
3.11章からお読みください。

Re: すっごい初歩的なことですがデータセーブロード

Posted: 2011年11月02日(水) 08:25
by 史上最悪のデスペナ
おお・・・・半年ぐらいチェックしない間にいつの間にか開いている講座が増えている・・・・・。