Matlab Crack on Mex File

时间:2015-06-16 07:11:32

标签: c matlab fopen mex

我对Matlab有一点经验,但对mex环境不熟悉。

我想要做的是将我计算的一些值保存到我的C例程中的txt文件中。

为了简单起见,我在这里使用MathWork的Create C Source File guide中的示例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);
}

所以我添加了 f fopen fprintf fclose 命令的声明。 我使用 MS Visual Studio C ++ 2013 Professional(C)作为编译器,代码编译得很好。 通过取消注释我的所有更改并再次一点一点地介绍它,我能够发现Matlab在 fopen 命令崩溃。

我无法在这里或其他地方找到有用的帮助,所以非常欢迎任何建议。非常感谢提前!

亲切的问候

菲利普

2 个答案:

答案 0 :(得分:0)

感谢有用的评论,尤其是RobertStettler! 问题在于我打开文件的模式。它应该是r +,w +或a +。

答案 1 :(得分:0)

使用w+时使用r+fopen,具体取决于您要对文件执行的操作以及要创建文件或打开文件。

从(http://www.tutorialspoint.com/c_standard_library/c_function_fopen.htm

  • “r”打开文件进行阅读。该文件必须存在。
  • “w”创建一个用于写入的空文件。如果已存在具有相同名称的文件,则会删除其内容,并将该文件视为新的空文件。
  • “a”附加到文件。编写操作,在文件末尾附加数据。如果文件不存在,则创建该文件。
  • “r +”打开文件以更新读取和写入。该文件必须存在。
  • “w +”为读取和写入创建一个空文件。
  • “a +”打开文件进行阅读和追加。