- ベストアンサー
構造体の内容をファイルに書き込む方法
現在、VC++6onwin2K,win32SDKを用いて、アプリケーションを作っています。 ターゲットはWIN_CE2.0です。 アプリケーションの初期値を保存するために、 構造体の内容をファイルに書き込み、 読み出したいのですが、やり方が分かりません。 ターゲットがWIN_CE2.0だからだと思うのですが、 <iostream.h>,<fstream.h>はインクルードできません。 現在は構造体の内容をcharまたはWCHARに変換して CreateFile関数でファイル書き込みしているのですが、 無駄なことをしている気がします。 なにか良い方法はありませんか? よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
CreateFile でオープンしたファイルに対して、 WriteFile( hFile, (LPCVOID)構造体名, sizeof(構造体名), &dword, NULL ); という方法で書き込むのはどうでしょう? 読み込みのときは逆のことを ReadFile でやるわけですが。
その他の回答 (1)
- muyoshid
- ベストアンサー率72% (230/318)
こんにちわ。 > 現在は構造体の内容をcharまたはWCHARに変換して > CreateFile関数でファイル書き込みしているのですが、 > 無駄なことをしている気がします。 > なにか良い方法はありませんか? stdio.h をinclude して、fwrite() で (バイナリ形式で) 書き込んじゃう と言うのはどうでしょう? エディタで見ても意味がわからなくなりますが、fread/fwrite で構造体 の内容をそのまま読み書きできますので、お手軽かと。
お礼
>stdio.h をinclude して、 MFCを使用しないで、APIのみで開発を行っているせいか、 ターゲットがWIN_CE2.0のためか良く分かっていないのですが、 (多分どちらかに原因があると考えています。) stdio.h がinclude 出来ません。(;_;) ビルド時に下記エラーが発生します。 C1083: インクルード ファイルがオープンできません。 多分CreateFile関数の体系を使わないとダメなのでは ないでしょうか?
お礼
下記のようにすると上手くいきました。 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ははじめて聞きました。 ありがとうございました。