この質問では、メモリ バッファを FILE として作成する可能性を検討します。この問題は、TiXml が XML を FILE に出力できるが、メモリ バッファーに直接出力できない状況で発生します。
この問題に対する 1 つの解決策は、POSIX 関数 fmemopen またはを利用することです。 open_memstream。どちらの関数もメモリを FILE 記述子として使用できますが、セマンティクスが異なります。
fmemopen は、指定されたサイズのメモリ バッファを作成し、それを FILE ストリームに関連付けます。 FILE に書き込まれたデータはメモリ バッファーに保存されます。
open_memstream はパイプを作成し、それを FILE ストリームに関連付けます。 FILE に書き込まれたデータはパイプ バッファーに書き込まれます。このアプローチは、データのサイズが事前にわからない状況に適しています。
fmemopen を使用して FILE* のメモリ バッファを作成する例を次に示します。
<code class="c">#include <stdlib.h> #include <stdio.h> #include <string.h> int main() { // Create a 1024-byte memory buffer char buffer[1024]; FILE *fp = fmemopen(buffer, sizeof(buffer), "w"); // Write some data to the buffer fputs("Hello, world!", fp); fclose(fp); // Read the data back from the buffer rewind(fp); char readBuffer[1024]; fread(readBuffer, sizeof(char), 1024, fp); printf("%s", readBuffer); return 0; }</code>
以上がC で FILE* を使用してメモリ バッファに書き込むにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。