私はここにプレーンCで小さなプログラムを書いています。 私が必要とするのは、メモリに直接ファイルを作成することです(ハードディスクには書き込まれません) 現在、ファイルに書き込むにはfopen("filename.txt,"wb")
を使用できます。C - メモリにファイルを作成する
私はLinuxでfmemopen()
を使用できることを知っています。 win32にも同様のソリューションがありますか?
私はここにプレーンCで小さなプログラムを書いています。 私が必要とするのは、メモリに直接ファイルを作成することです(ハードディスクには書き込まれません) 現在、ファイルに書き込むにはfopen("filename.txt,"wb")
を使用できます。C - メモリにファイルを作成する
私はLinuxでfmemopen()
を使用できることを知っています。 win32にも同様のソリューションがありますか?
これはファイルを作成するので、私はfopenを使用しません。
メモリにファイルを作成するには、ファイルを作成し、それが適切な方法で保存する必要があります。
いくつかのデータ型の配列を作成する必要があります。私はchar *を使用しますが、imformationをエンコードしたいものは何でも使用できます。その後、配列に情報を追加することで、ファイルを読み書きすることができます。
返事ありがとう、私の唯一の問題は、* FILEを使用する外部プログラムを使用するように言われたので、私はそれを使用することを余儀なくされました。 2番目の要求はディスクに何も書き込まないようにすることでした。メモリ内の仮想ファイル、メモリマッピングなどのいくつかの回避策を探しています。 –
@J Nash:FILEポインタは完全に実装定義であり、コンパイラ間では移植できません。内部的に外部プログラム自体FILEがプログラムにどのような影響を与えるかはわかりません。 – Clifford
申し訳ありませんが、徹底的に説明していないので、暗号化を既存のプログラムに追加しています。これはかなり複雑です。これは、ディスク上に存在する入力ファイルを読み込みます。現在、私はこれらのファイルをまず暗号化していますが、プログラム内で復号化しますが、安全ではない一時的な "オープンされた非暗号化"ファイルを作成します。ありがとう –
MapViewOfFileで近いものを実現できます。あなたはこのために使用すべき のWin32 APIは以下のとおりです。
は、あなたが完了したら、ファイルマッピングをマップ解除し、クローズすることを忘れないでください。
このような機能は、Windowsでは本質的にサポートされていません。しかし、ファイルではなくメモリバッファにアクセスするために、またはstdioのような機能を実装するために、高水準stdio関数を書き直すことができます。または、RAM diskを実装することもできますが、RAMディスクドライバ自体をインストールすることは、「ディスクに書き込まない」ルールを満たしていない可能性があります。
なぜですか?作成したファイルから読み込むには 'fread()'のような通常の 'FILE *' I/O関数を使うことができますか? – unwind
あなたは何を解決しようとしていますか?あなたの最終目標は何ですか? – jweyrich