構造体を使う方法でうまくいきました。
/*宣言*/
struct ranking_data
{
char name[10];
int kyori;
};
/*ランキングデータ読み込み*/
wsprintf(stagefile,"%s\\ranking.dat",folder);
hfile=CreateFile(stagefile,GENERIC_READ,0,NULL,
OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
if(hfile==INVALID_HANDLE_VALUE) {
/*ランキングデータ初期化*/
FillMemory(ranking,sizeof(ranking),0);
ranking[0].kyori=100000;
ranking[1].kyori=100000;
ranking[2].kyori=100000;
ranking[3].kyori=100000;
ranking[4].kyori=100000;
status=9;
} else {
/*ランキングデータ読み込み*/
ReadFile(hfile,ranking,sizeof(ranking),(DWORD*)&readsize,NULL);
if(readsize!=sizeof(ranking))status=-3; else status=9;
CloseHandle(hfile);
}
/*自分が何位にランクインしたか*/
for(rank=0;rank<5;rank++) {
if(ranking[rank].kyori>=kyori)break;
}
if(rank<5) {
memcpy(&ranking[rank+1],&ranking[rank],sizeof(ranking[0])*(4-rank));
FillMemory(&ranking[rank],sizeof(ranking[rank]),0);
ranking[rank].kyori=kyori;
ranklast=37;
}
/*ランキングの保存*/
wsprintf(stagefile,"%s\\ranking.dat",folder);
hfile=CreateFile(stagefile,GENERIC_WRITE,0,NULL,
CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);
if(hfile==INVALID_HANDLE_VALUE) {
status=-4;
} else {
/*ランキングデータ書き込み*/
WriteFile(hfile,ranking,sizeof(ranking),(DWORD*)&readsize,NULL);
if(readsize!=sizeof(ranking))status=-5; else status=12;
CloseHandle(hfile);
}