ハイスコアについて2

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
デリ

ハイスコアについて2

#1

投稿記事 by デリ » 15年前

さきほどハイスコアの格納についてアドバイスいただいたのを参考に
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' の宣言を確認してください。
といった警告文が三つほどでてるんですが関係があるんでしょうか?

ISLe
記事: 2650
登録日時: 15年前
連絡を取る:

Re: ハイスコアについて2

#2

投稿記事 by ISLe » 15年前

読み込むときは"r"で、ファイルを開けない(fopenの戻り値がNULLの)ときはhighscoreを適当に初期化しましょう。
書き込むときは"w"を使えば既にファイルがあるときは中身をクリアして上書きします。

lastscoreがhighscoreを上回ればhighscoreがlastscoreに更新されるのではないですか?
highscoreを読み書きするようにだけすれば良いと思います。

警告は、fopenは使い方によってはセキュリティ上安全ではないのでマイクロソフトはもっと安全なものを用意したので使ってくださいというものです。
気にしなくて良いです。
ソースファイルの一行目に
#define _CRT_SECURE_NO_WARNINGS
と書けば出なくなります。

デリ

Re: ハイスコアについて2

#3

投稿記事 by デリ » 15年前

ISLeさんどうもありがとうございました。
警告も消えうまくハイスコアが保存できるようになりました。

閉鎖

“C言語何でも質問掲示板” へ戻る