セーブ・ロードの方法・・
Posted: 2007年6月28日(木) 18:52
セーブ・ロードの方法がまったくわかりません。
セーブ・ロードの概念みたいなものを
どなたか教えていただけませんか?
セーブ・ロードの概念みたいなものを
どなたか教えていただけませんか?
[color=#d0d0ff" face="monospace]#include <stdio.h>
#include <string.h>
// 対象のデータ
typedef struct Data
{
int year;
int month;
int day;
float pi;
char name[0x10];
} Data;
// 書き込み
static int save_data(const Data *data)
{
// 書き込み用バイナリファイルとして開く
FILE *fp;
if((fp = fopen("serialize.dat", "wb")) == NULL)
return 0;
// 一気に書き込む
fwrite((const void *)data, sizeof(Data), 1, fp);
fclose(fp);
return 1;
}
// 読み込み
static int load_data(Data *data)
{
// 読み込み用バイナリファイルとして開く
FILE *fp;
if((fp = fopen("serialize.dat", "rb")) == NULL)
return 0;
// dataの中身を空(0)にしておく
memset((void *)data, 0, sizeof(Data));
// 一気に読み込む
fread((void *)data, sizeof(Data), 1, fp);
fclose(fp);
return 1;
}
// data1の中身をファイルに書き出し、
// そのファイルから data2に読み込み
int main(void)
{
static const Data data1 = { 2007, 6, 29, 3.14159f, "test"};
Data data2;
// data1をファイルに書き出す
if(save_data(&data1))
{
// data2にファイルから読み出す
if(load_data(&data2))
{
// 双方の表示してみる
printf("data1 = %d/%d/%d (%f) %s\n",
data1.year, data1.month, data1.day,
data1.pi, data1.name);
printf("data2 = %d/%d/%d (%f) %s\n",
data2.year, data2.month, data2.day,
data2.pi, data2.name);
}
}
return 0;
}[/color]