使文件指针读/写到内存中的位置

Leo*_*zen 23 c c++

我可以使用fopen()将文件指针写入文件.但是我可以创建一个文件指针,这样调用fputc或fprintf之类的函数会写入内存中的指针吗?这方面的一个例子是java中的ByteArrayOutputStream.另外:我可以反向运行它,其中库需要一个文件指针来读取,所以我分配内存,并创建一个新的文件指针,将从该内存位置读取,但当块的大小用完时返回EOF?(如Java中的ByteArrayInputStream).有没有办法在C中这样做?例如:

FILE *p = new_memory_file_pointer();
fprintf(p, "Hello World!\n");
char *data = get_written_stuff(p);
printf("%s", data); //will print Hello World!
Run Code Online (Sandbox Code Playgroud)

&&/||

char s[] = "Hello World!\n";
FILE *p = new_memory_file_pointer_read(s, sizeof(s));
char *buffer = (char *)malloc( 1024*sizeof(char) );
fread((void *)buffer, 1, sizeof(s), p);
printf("%s", buffer); //prints Hello World!
Run Code Online (Sandbox Code Playgroud)

编辑:对于那些多年后阅读这个问题的人,除了接受的答案之外,你应该看一下open_memstream(3),这些行为更像是这些Java类fmemopen.

Ise*_*ria 24

如果您的操作系统提供fmemopen,它可能会满足您的目的.