さきほどハイスコアの格納についてアドバイスいただいたのを参考に
void high_score(void){
FILE *file;
if(flag == 0){
file = fopen("hi_score1.txt","r+");
fscanf(file,"%d",&highscore);
DrawFormatString(200,30,Cr2,"ハイスコア:%d",highscore);
}
if(flag == 2){
file = fopen("hi_score1.txt","r+");
if(highscore <= lastscore) fprintf(file,"%d",lastscore);
}
fclose(file);
}
という関数を作ったんですがfprintfがうまくできずかなりでかい数字がはいってしまいます。
どのようになおせばいいでしょうか?
(使用している変数はすべて関数の外で定義しているint型の整数で、入っている値自体に問題はありませんでした。)
またコンパイル時に
warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
'fopen' の宣言を確認してください。
といった警告文が三つほどでてるんですが関係があるんでしょうか?
ハイスコアについて2
Re: ハイスコアについて2
読み込むときは"r"で、ファイルを開けない(fopenの戻り値がNULLの)ときはhighscoreを適当に初期化しましょう。
書き込むときは"w"を使えば既にファイルがあるときは中身をクリアして上書きします。
lastscoreがhighscoreを上回ればhighscoreがlastscoreに更新されるのではないですか?
highscoreを読み書きするようにだけすれば良いと思います。
警告は、fopenは使い方によってはセキュリティ上安全ではないのでマイクロソフトはもっと安全なものを用意したので使ってくださいというものです。
気にしなくて良いです。
ソースファイルの一行目に
#define _CRT_SECURE_NO_WARNINGS
と書けば出なくなります。
書き込むときは"w"を使えば既にファイルがあるときは中身をクリアして上書きします。
lastscoreがhighscoreを上回ればhighscoreがlastscoreに更新されるのではないですか?
highscoreを読み書きするようにだけすれば良いと思います。
警告は、fopenは使い方によってはセキュリティ上安全ではないのでマイクロソフトはもっと安全なものを用意したので使ってくださいというものです。
気にしなくて良いです。
ソースファイルの一行目に
#define _CRT_SECURE_NO_WARNINGS
と書けば出なくなります。