我正在尝试将文件描述符从Matlab传递给mex函数(用C编写)来解析大块文本。 最低工作代码如下:
#include "mex.h"
#include
void mexFunction( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) {
char buf[1024];
int fd = (int) mxGetScalar(prhs[0]);
FILE* f = fdopen(fd,"r");
mexPrinf("%d",ftell(f));
fgets(buf,1024,f);
mexPrintf(buf);
}
从Matlab / Octave调用如下:
f = fopen('foo.txt','r');
fgets(f); % do something
disp(ftell(f));
foo(f);
在使用getline()
读取一些行后传递文件描述符时,当前文件位置比Matlab中的位置大约4KB。
我怀疑Matlab缓存输入有问题,但由于性能问题,我无法禁用缓冲。
有没有办法让mex函数从matlab中的当前位置开始?