Cette question explore la possibilité de créer un tampon mémoire en tant que FILE. Cela se produit dans des situations où TiXml peut imprimer du XML dans un FILE mais pas directement dans une mémoire tampon.
Une solution à ce problème consiste à utiliser les fonctions POSIX fmemopen ou open_memstream. Les deux fonctions permettent d'utiliser la mémoire comme descripteur de FILE, mais elles diffèrent par la sémantique.
fmemopen crée un tampon mémoire d'une taille spécifiée et l'associe à un flux FILE. Les données écrites dans le FILE seront stockées dans la mémoire tampon.
open_memstream crée un canal et l'associe à un flux FILE. Les données écrites dans FILE seront écrites dans le tampon du canal. Cette approche est plus adaptée aux situations où la taille des données n'est pas connue à l'avance.
Voici un exemple utilisant fmemopen pour créer une mémoire tampon pour un 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>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!