我正在尝试从 matlab 中写入一些 STL 数据,我正在尝试通过编写 MEX 文件(用 C 编写的 matlab DLL)来做到这一点目前我有一个循环,只是通过我的数据写出 stl 语法与花车。
...
for(m=0;m<colLen;m++)
{
res = m % 3;
if(res == 0)
{
fprintf(fp, "\tfacet normal %f %f %f \n",
normalValues[(x*nvcolLen)+0], normalValues[(x*nvcolLen)+1], normalValues[(x*nvcolLen)+2]);
fprintf(fp,"\t\touter loop\n" );
flag = 0;
x++;
}
fprintf(fp, "\t\t\tvertex ");
for(n=0;n<rowLen;n++)
{
fprintf(fp, "%f ", xValues[m*rowLen+n]);
}
fprintf(fp,"\n");
flag++;
if (flag == 3)
{
fprintf(fp, "\t\tendloop\n\tendfacet\n");
flag = 0;
}
}
...
我想在 MEX 文件中执行此操作的主要原因是因为它编译后速度更快。我正在阅读一本 C++ 书,“Sams Teach Yourself C++ in One our day”,在第 645 页中,他们谈到了使用缓冲区来加快写入磁盘的速度。一旦缓冲区填满,写入数据,刷新它,然后再做一次。他们并没有真正展示任何关于如何做到这一点的代码,这是使用 C++ 的流。
我将如何在 C 中处理这个问题?我是否只需制作一个固定大小的 char* 缓冲区,然后以某种方式检查它何时已满并使用 fwrite() 将其写入文件,刷新它,重新开始?