C Matlab在Mex文件中的fopen上运行
我对Matlab有一点经验,但我对mex环境还不熟悉 我试图做的是将我计算的一些值保存到C例程中的txt文件中 为了简单起见,我使用MathWork的示例arrayProduct.c来详细说明 我用以下方式修改了示例代码:C Matlab在Mex文件中的fopen上运行,c,matlab,fopen,mex,C,Matlab,Fopen,Mex,我对Matlab有一点经验,但我对mex环境还不熟悉 我试图做的是将我计算的一些值保存到C例程中的txt文件中 为了简单起见,我使用MathWork的示例arrayProduct.c来详细说明 我用以下方式修改了示例代码: void arrayProduct(double x, double *y, double *z, mwSize n) { mwSize i; /* multiply each element y by x */ FILE *f = NULL; f = fo
void arrayProduct(double x, double *y, double *z, mwSize n)
{
mwSize i;
/* multiply each element y by x */
FILE *f = NULL;
f = fopen("log_test.csv", "rb");
for (i=0; i<n; i++)
{
z[i] = x * y[i];
fprintf(f, "%g\n", z[i]);
}
fclose(f);
}
void arrayProduct(双x,双y,双z,最大尺寸n)
{
MWi尺寸;
/*将每个元素y乘以x*/
文件*f=NULL;
f=fopen(“log_test.csv”、“rb”);
对于(i=0;i感谢您的有益评论,尤其是罗伯特特勒的评论!
问题在于我打开文件时使用的模式。它应该是r+、w+或a+。使用w+
或r+
时使用fopen
,具体取决于您要对文件执行的操作以及您要创建它还是只打开它
从()
- “r”打开一个文件进行读取。该文件必须存在
- “w”创建一个空文件进行写入。如果已存在同名文件,则其内容将被擦除,并将该文件视为新的空文件
- “a”追加到文件。写入操作时,在文件末尾追加数据。如果文件不存在,则创建该文件
- “r+”打开一个文件以更新读取和写入。该文件必须存在
- “w+”为读取和写入创建一个空文件
- “a+”打开一个文件进行读取和追加
当崩溃时,你的意思是它卡住了吗?你不应该使用w+
而不是rw
?或者r+
…文件log\u test.csv
已经存在吗?嘿,不,它完全关闭了。它是Win7 64位上的Matlab2015a为什么你在调用fopen()时没有任何错误检查
?@RobertStettler,非常感谢,似乎已经是这样了!不客气,我把答案贴得更详细了,这样你就可以结束这个话题了。