이 질문은 메모리 버퍼를 FILE으로 생성할 수 있는 가능성을 탐구합니다. TiXml이 XML을 FILE에 인쇄할 수 있지만 메모리 버퍼에 직접 인쇄할 수는 없는 상황에서 발생합니다.
이 문제에 대한 한 가지 해결책은 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!