• ベストアンサー

構造体の内容をファイルに書き込む方法

現在、VC++6onwin2K,win32SDKを用いて、アプリケーションを作っています。 ターゲットはWIN_CE2.0です。 アプリケーションの初期値を保存するために、 構造体の内容をファイルに書き込み、 読み出したいのですが、やり方が分かりません。 ターゲットがWIN_CE2.0だからだと思うのですが、 <iostream.h>,<fstream.h>はインクルードできません。 現在は構造体の内容をcharまたはWCHARに変換して CreateFile関数でファイル書き込みしているのですが、 無駄なことをしている気がします。 なにか良い方法はありませんか? よろしくお願いします。

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

  • ベストアンサー
noname#25358
noname#25358
回答No.2

 CreateFile でオープンしたファイルに対して、  WriteFile( hFile, (LPCVOID)構造体名, sizeof(構造体名), &dword, NULL );  という方法で書き込むのはどうでしょう?  読み込みのときは逆のことを ReadFile でやるわけですが。

sobirupa
質問者

お礼

下記のようにすると上手くいきました。 struct SCREEN{ TCHAR Id1[24]; TCHAR Option1[12]; }; struct SCREEN ScreenIni; SCREEN *p_Screen = &ScreenIni; WriteFile( hFile, (LPCVOID)p_Screen, sizeof(SCREEN), &dwWritten,NULL); 因みにLPCVOIDははじめて聞きました。 ありがとうございました。

その他の回答 (1)

  • muyoshid
  • ベストアンサー率72% (230/318)
回答No.1

こんにちわ。 > 現在は構造体の内容をcharまたはWCHARに変換して > CreateFile関数でファイル書き込みしているのですが、 > 無駄なことをしている気がします。 > なにか良い方法はありませんか? stdio.h をinclude して、fwrite() で (バイナリ形式で) 書き込んじゃう と言うのはどうでしょう? エディタで見ても意味がわからなくなりますが、fread/fwrite で構造体 の内容をそのまま読み書きできますので、お手軽かと。

sobirupa
質問者

お礼

>stdio.h をinclude して、 MFCを使用しないで、APIのみで開発を行っているせいか、 ターゲットがWIN_CE2.0のためか良く分かっていないのですが、 (多分どちらかに原因があると考えています。) stdio.h がinclude 出来ません。(;_;) ビルド時に下記エラーが発生します。 C1083: インクルード ファイルがオープンできません。 多分CreateFile関数の体系を使わないとダメなのでは ないでしょうか?

関連するQ&A