首頁  >  文章  >  後端開發  >  如何在 C 中使用 FILE* 寫入記憶體緩衝區?

如何在 C 中使用 FILE* 寫入記憶體緩衝區?

Patricia Arquette
Patricia Arquette原創
2024-11-01 14:10:03640瀏覽

How Can I Write to a Memory Buffer Using a FILE* in C?

透過 FILE* 寫入記憶體緩衝區

這個問題探討了將記憶體緩衝區建立為 FILE 的可能性。它出現在 TiXml 可以將 XML 列印到檔案但不能直接列印到記憶體緩衝區的情況下。

POSIX 解

此問題的解決方案是利用 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn