Beim Durchlesen der GNU-Dokumentation weiter String-Streams Ich habe zwei ähnliche Funktionen gefunden, die sehr ähnliche Dinge tun:
FILE * fmemopen (void *buf, size_t size, const char *opentype)
FILE * open_memstream (char **ptr, size_t *sizeloc)
Nach dem Lesen der Dokumentation scheint es open_memstream
sollte zum Öffnen eines Ausgabestreams und verwendet werden fmemopen
für die Eingabe. Was mich fesselt ist die opentype
Argument, zu dem Sie übergehen können fmemopen
.
Das Linux Manpage erklärt:
Wenn buf als NULL angegeben ist, weist fmemopen() dynamisch eine Byte lange Puffergröße zu. Dies ist nützlich für eine Anwendung, die Daten in einen temporären Puffer schreiben und dann wieder zurücklesen möchte. Der Puffer wird automatisch freigegeben, wenn der Stream geschlossen wird. Beachten Sie, dass der Aufrufer keine Möglichkeit hat, einen Zeiger auf den temporären Puffer zu erhalten, der von diesem Aufruf zugewiesen wurde (siehe aber unten open_memstream()).
Was wäre also der Sinn der Verwendung open_memstream
wenn fmemopen
kann mit dem Öffnen eines Eingabe-/Ausgabestroms umgehen?