這個問題探討了將記憶體緩衝區建立為 FILE 的可能性。它出現在 TiXml 可以將 XML 列印到檔案但不能直接列印到記憶體緩衝區的情況下。
此問題的解決方案是利用 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中文網其他相關文章!