今学祭向け(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ライブラリ