ファイル内容が更新されません
Posted: 2014年4月29日(火) 14:33
こんにちは。今回は、ファイルに関する質問です。
セーブデータの作成に取り掛かるため、先日教科書やサイトで勉強したのち、
プログラムを打った時にバグが発生しました。
具体的にいうと、ファイルの内容が更新されません。
↓score.cpp
としたのですが、
①ファイルが見当たらないのでファイルを新規作成
②ハイスコアが更新されるべき状態になる
③終了時にデータを更新する
④再起動。データが更新されていなくなっている
という状態に陥っております。
デバッグ時の結果から、score_ini関数には問題がなく、
ゲームが終了される直前に、確かにhiscore_write関数を読み込んでおりますので、
hiscore_write関数のほうに問題があるように思えます。
どこを改善すべきなのでしょうか?
セーブデータの作成に取り掛かるため、先日教科書やサイトで勉強したのち、
プログラムを打った時にバグが発生しました。
具体的にいうと、ファイルの内容が更新されません。
↓score.cpp
void score_ini(){
//ハイスコアを登録する関数
int scanscore;
FILE *fp;
if( ( fp = fopen( "hiscore.dat","r"))==NULL){ //hiscore.datが見つからなかった場合
fp = fopen( "hiscore.dat" , "w+" ); //hiscore.datを新規作成する
for(int i=0;i<CHAR_KIND_MAX;i++){
fprintf(fp,"%d\n",100000); //4機分全てにハイスコア「100000」を登録
}
fclose(fp);
}
fp = fopen( "hiscore.dat" , "r" ); //4機体分のハイスコア登録
for(int j=0;j<CHAR_KIND_MAX;j++){
fscanf(fp,"%d",&scanscore);
hiscore[j] = scanscore;
}
fclose(fp);
}
void hiscore_write(){
FILE *fp;
for(int i=0;i<CHAR_KIND_MAX;i++){
if(i==0){
if(hiscore[i] < ch.hiscore) hiscore[i]=ch.hiscore;
}
}
fp = fopen( "hiscore.dat" , "w" );
for(int j=0;j<CHAR_KIND_MAX;j++){
fprintf(fp,"%d\n",hiscore[j]);
}
fclose(fp);
}①ファイルが見当たらないのでファイルを新規作成
②ハイスコアが更新されるべき状態になる
③終了時にデータを更新する
④再起動。データが更新されていなくなっている
という状態に陥っております。
デバッグ時の結果から、score_ini関数には問題がなく、
ゲームが終了される直前に、確かにhiscore_write関数を読み込んでおりますので、
hiscore_write関数のほうに問題があるように思えます。
どこを改善すべきなのでしょうか?