从mex文件中的文件描述符继续读取

时间:2014-03-07 11:38:07

标签: matlab mex

我正在尝试将文件描述符从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中的当前位置开始?

0 个答案:

没有答案