内存流(字节数组流)——主要用于将数据写入内存或者从内存中读取数据
一共有三个函数用于创建内存流:
#include <stdio.h>
FILE* fmemopen(void *restrict buf,size_t size,const char *restrict type);
//buf参数指向缓冲区的开始位置,size指定了缓冲区的大小,type表明如何控制流
type的可能取值如下:
type | 说明 |
---|---|
r或rb | 为读而打开 |
w或wb | 为写而打开 |
a或ab | 追加;为在第一个null字节处写而打开 |
r+或r+b或rb+ | 为读和写打开 |
w+或w+b或wb+ | 把文件截断至0长,为读和写打开 |
a+或a+b或ab+ | 追加;为在第一个null字节出读和写而打开 |
关于书上的代码,内容较复杂,请见:UNIX编程之冲洗内存流与null追加策略(跪谢作者)
另外两个函数为:
#include <stdio.h>
FILE* open_memstream(char** bufp,size_t *sizep);
#include<wchar.h>
FILE* open_wmemstream(wchar_t ***bufp,size_t *sizep);
- 创建的流只能写打开
- 不能指定自己的缓冲区,但是可以分别通过bufp和sizep参数访问缓冲区地址的大小
- 关闭流后需要自行释放缓冲区
- 对流添加字节会增加缓冲区的大小
以上内容来源于网络,仅作本人学习笔记使用,关于本书请参考APUE