Diese Frage untersucht die Möglichkeit, einen Speicherpuffer als DATEI zu erstellen. Es tritt in Situationen auf, in denen TiXml XML in eine DATEI drucken kann, aber nicht direkt in einen Speicherpuffer.
Eine Lösung für dieses Problem besteht darin, die POSIX-Funktionen fmemopen oder zu verwenden open_memstream. Beide Funktionen ermöglichen die Verwendung von Speicher als FILE-Deskriptor, unterscheiden sich jedoch in der Semantik.
fmemopen erstellt einen Speicherpuffer einer angegebenen Größe und ordnet ihn einem FILE-Stream zu. In die FILE geschriebene Daten werden im Speicherpuffer gespeichert.
open_memstream erstellt eine Pipe und verknüpft sie mit einem FILE-Stream. In die Datei geschriebene Daten werden in den Pipe-Puffer geschrieben. Dieser Ansatz eignet sich besser für Situationen, in denen die Größe der Daten nicht im Voraus bekannt ist.
Hier ist ein Beispiel für die Verwendung von fmemopen zum Erstellen eines Speicherpuffers für eine DATEI*:
<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>
Das obige ist der detaillierte Inhalt vonWie kann ich mit einer DATEI* in C in einen Speicherpuffer schreiben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!