Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C Matlab在Mex文件中的fopen上运行_C_Matlab_Fopen_Mex - Fatal编程技术网

C Matlab在Mex文件中的fopen上运行

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

我对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 = 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,非常感谢,似乎已经是这样了!不客气,我把答案贴得更详细了,这样你就可以结束这个话题了。