我想寫一些STL數據出來的matlab,我試圖通過編寫一個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在自己的一天中教自己的C++」,並在第645頁中討論瞭如何使用緩衝區來加速寫入磁盤。一旦緩衝區填滿,寫入數據,刷新它,然後重新執行。他們並沒有真正展示如何做到這一點的代碼,這是與C++的流。
我如何在C中處理這個問題?我只是做一個固定大小的char *緩衝區,然後以某種方式檢查它的全部時間,並用fwrite()將它寫入一個文件,刷新它,重新開始?