今学祭向け(2010/11/4~)のクイズゲームを作っており、
そのランキングの実装がうまくいかず頓挫しています。
DXライブラリを使用しているのですが、ライブラリではファイルの読み込みはサポートされているのですが、
書き込みはサポートされておらず、ある程度検索しつつ見よう見まねで取り組んでみたものの、
ランキングを保存するテキストがうまく更新できません。
fopen、fwriteの使い方をおそらく間違っていると思うのですが、正しい使い方をご教示願います
ランキングのテキストデータの一部です
サンプルネーム0
10000
サンプルネーム1
9000
サンプルネーム2
8000
サンプルネーム3
7000
サンプルネーム4
6000
サンプルネーム5
5000
次にソースコードの一部です
/*
DXライブラリでファイルの読み込みは出来るので、
プレイ前のランキングをテキストから読み込んで、変数に入れています
具体的には、
char RankName[20] にランキングに入っているプレイした人の名前(iは順位)
int RankScore にランキングには言っているプレイした人のスコア(iは順位)
また、今回プレイした人の情報も事前に変数に格納しています
char PlayName[20] に現在プレイしてる人の名前
double Score_Num に現在プレイしてる人のスコア(int型にキャストして表示、記録予定)
int RankNum に現在プレイしてる人の順位(ランキングを読み込むことは出来るので、順位を出すところまでは実装しています)
*/
//ランキングテキストに記録
FILE *ranktext;
char s[256];
sprintf_s(s, 256 , "Rank%d.txt", mode_p );
if((ranktext = fopen( s , "w" )) == NULL ){
fprintf(stderr, "ランクテキストオープンエラー\n");
}
int line = FileLine( Ranking_text[mode_p] );//ランキングテキストの行数を返す関数です
for(int i=0;i< line ; i++){
char score[21];
char Name[21];
if(i < RankNum){//順位がi未満なら、元のデータのスコア、名前を記述
sprintf_s(Name , 21 , "%s\0" , RankName);
fwrite( Name , sizeof(char) , 21, ranktext);
sprintf_s(score,21,"\n%d",RankScore);
fwrite(score , sizeof(char) , 21 , ranktext);
}else if(RankNum == i){//順位がiと同じなら、現在プレイしてる人の名前とスコアを記述してから、元のデータのスコアをその下に書き込み
sprintf_s(Name , 21 , "%s\0" , PlayName);
fwrite( Name , sizeof(char) , 21 , ranktext );
sprintf_s(score,21,"\n%d",(int)Score_Num);
fwrite( score , sizeof(char) , 21 , ranktext );
sprintf_s(Name , 21 , "%s\0" , RankName);
fwrite( Name , sizeof(char), 21 , ranktext );
sprintf_s(score,21,"\n%d",RankScore);
fwrite( score, sizeof(char) , 21 , ranktext );
}else{//順位がi以上なら、元のデータのスコア、名前を記述
sprintf_s(Name , 21 , "%s\0" , RankName);
fwrite( RankName , sizeof(char), 21 , ranktext );
sprintf_s(score,21,"\n%d",RankScore);
fwrite( score , sizeof(char) , 21 , ranktext );
}
}
fclose(ranktext);求めている処理は、ランキングのテキストデータが以下のようになることです
サンプルネーム0
10000
サンプルネーム1
9000
サンプルネーム2
8000
サンプルネーム3
7000
プレイした人1
6500
サンプルネーム4
6000
サンプルネーム5
5000
なお、現在のソースコードの状態でビルドして起動すると以下のようになります
サンプルネーム0
10000
出来ればランキングは実装したいのでよろしくお願いします。
環境
Windows7 64bit
VisualStudio2010
ライブラリ:DXライブラリ