こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

何かを記録するにはファイル処理で自作ですか?

 Winの(API)プログラミングをC言語で行っており、今、勉強しています。GUIのことは大体わかってきました。それで疑問に思ったのですが、例えばゲームのソフトだとして、得点なんかを記録しておきたいことがあったとします。

 一回実行を止めてから、また実行して、その情報を読み出すには、自分で変数の内容を保存しているということになると思います。
 アプリケーション独自の保存形式などありますが、あれは変数の内容をファイルに書き出すということなんですか?

 色んなプログラミングのサイトを見ても、いろいろなサンプルプログラミングはありますが、そういうタイプのものがファイル処理しか目に付きません。C言語で、ファイル処理というのをならったき、○○.datというファイルにファイルポインタで文字列を読み出したり、書き込んだりすることを習いましたが、そういう入出力する部分を自分でつくっておくものなんですか?

 アプリケーションをつくるうえで、基本的なことだと思いますが、詳しい人がいましたら教えてください。よろしくお願いします。

投稿日時 - 2004-10-31 00:14:13

QNo.1063280

暇なときに回答ください

質問者が選んだベストアンサー

ゲーム開発者です。

Windowsの市販ゲームの場合、ハイスコア等をまんまテキストデータで
保存するということは、まず無いでしょう。

#1さんのおっしゃられているレジストリに書き込むというのも一つの方法です。
>C言語で、ファイル処理というのをならったき、
>○○.datというファイルにファイルポインタで文字列を読み出したり、
>書き込んだりすることを習いましたが
恐らくfopenの事だと思いますが、バイナリモード(wb)を使った事はありますか?
wbでオープンすれば、独自のフォーマットでどんなファイルでも作成できます。
関連する関数でfseek,fread,ftell,fwrite,・・・色々あります。
検索して調べてみてください。
(C++では更にfstreamが用意されています。)

またWindowsの場合はAPIでCreateFileがあります。
fopenも結局のところ、このCreateFileを呼び出しています。
MSDNでCreateFileを調べれば関連するAPIもでているので
その辺りも勉強してみてはどうでしょう?
WriteFile、ReadFile、ReadFileEx・・・こっちも色々あります。

投稿日時 - 2004-10-31 03:22:26

お礼

バイナリーモードの書き込み知りませんでした。

 独自のファイル形式をつかうソフトをよくみかけますが、いろいろあるんですね、。雰囲気だけはよくわかりました。もうすこし、ネットで調べて見ます…。

 そういえば、ゲームソフトは会社独自の画像形式だったとか聞きましたが…そういうとこまで迫らないといけないみたいですね…。ありがとうございました。

投稿日時 - 2004-11-01 20:24:40

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

そのアプリだけが使う情報を.iniファイルに保存するのもよく使われている方法です。ウィンドウの位置とか音を出す/出さないの設定とかを書いておいて次回の起動でも同じ設定で動かしたりですね。
APIを使えば簡単にファイル操作できます。
GetPrivateProfileInt(iniファイルから数値を取得する)
GetPrivateProfileString(iniファイルから文字列を取得する)
WritePrivateProfileString(iniファイルに文字列を書き込む)
ただし、iniファイルはテキストファイルなのでハイスコアをここに書いておくと簡単に改ざんできてしまうので暗号化しておかないとまずいですが。。

投稿日時 - 2004-10-31 09:12:12

お礼

ありがとうございました。

暗号化ですかぁ…なんか、めんどくさそうな話しですね。自分でつくってもバグだらけになりそうな予感.。。

投稿日時 - 2004-11-01 20:26:45

ANo.1

ご推察の通りです。
Windowsの場合はレジストリに書き込む場合もあります。この場合は、WindowsのAPIを使いますので、fopen()などは使いません。

投稿日時 - 2004-10-31 00:21:29

お礼

わかりました…私のもっている本では基本的なことしか書いていないようで…API調べてみます…。本とかって5000円くらしますね、あれどうにかならないのか…。

ありがとうございました。

投稿日時 - 2004-10-31 00:35:47

あなたにオススメの質問