dポイントプレゼントキャンペーン実施中!

現在、ファイルに書込む処理を施しています。

現在、以下のようなところまでいきました。

CFile file;
file.Open(ファイルのフルパス, 書込みモードで開く);

block bc; // グローバルで宣言した構造体
/* なお、この中には
struct block {
int x;
int y;
};
*/ があります。

そして、それを
bc.x = 1; // '1'は例
bc.y = 1; // 同上

とするのですが、これではどのファイルに書き込むか、ということがわからないのでイメージとしては

file.bc.x(y)としたいです。

こうするにはどうすればよいのでしょうか?
ご教授のほどよろしくお願いいたします。

A 回答 (4件)

 こんにちは。



 要するにMFCのCFileクラスを作成し、fileインスタンスに対して、

 CFile file;
 file.x = 1;
 file.y = 1;

 見たいに、block構造体と同じメンバ操作をしたいのでしょうか。

 一応CFileの下にあるCMemFileクラスが、メモリを扱えますが、此れだけでは使い物にならないので、このクラスか、CFileクラスをオーバーライド(または包含)して
 http://msdn.microsoft.com/ja-jp/library/tzdxd4x0 …

 以下のオペレータ

 block* operator->()
 block& operator*()
 operator block&()
 
 辺りをオーバーロードするしか無いかも知れません。
    • good
    • 0

出力をどのようにしたいのでしょう


1) テキストファイルとして出力したいのか
2) 構造体のメンバーをバイナリ形式で出力したいのか

1)なら sprintfなどで文字列に整形してから Writeで出力
2)なら Writeに構造体のアドレスを渡して出力

1) ...
TCHAR chBuf[256];
sprintf( chBuf, "%8d %8d", bc,x, bc,y );
file.Write( chBuf, sizeof( chBuf ) );

2) ...
file.Write( &bc, sizeof( bc ) );

指定位置ということなら file.Seekで書き込み単位ごとの位置指定をすればいいでしょう

5レコード目に書き込むなら
1)の場合
file.Sheek( 5 * sizeof( chBuf ), CFile::begin );
2)の場合
file.Seek( 5 * sizeof( bc ), CFile::begin );
といった具合になります
    • good
    • 0

構造体データを書き込むのでしたら、


ファイルをバイナリモードで読み書きする必要があります。
fopen, fwrite, freadで読み書きしてはいかがでしょうか?

参考URL:http://homepage3.nifty.com/mmgames/c_guide/17-02 …
    • good
    • 0

> file.bc.x(y)としたいです。



あなたのイメージがよくわかりません。
要するにどういうことなのですか?
ファイルにbcの内容を書き込みたいということですか?

この回答への補足

補足要求ありがとうございます。

はい、file内にbcの内容を書き込みたい、ということであってます。

よろしくお願いします。

補足日時:2009/03/30 10:51
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!