C で FILE* を使用してメモリ バッファに書き込むにはどうすればよいですか?

Patricia Arquette
リリース: 2024-11-01 14:10:03
オリジナル
637 人が閲覧しました

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

FILE* を介したメモリ バッファへの書き込み

この質問では、メモリ バッファを FILE として作成する可能性を検討します。この問題は、TiXml が XML を FILE に出力できるが、メモリ バッファーに直接出力できない状況で発生します。

POSIX 解決策

この問題に対する 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!