这个问题探讨了将内存缓冲区创建为 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中文网其他相关文章!