【发布时间】:2015-06-16 17:31:38
【问题描述】:
我对 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 命令处崩溃。
我无法在这里或其他地方找到有用的帮助,因此非常欢迎任何建议。提前非常感谢!
亲切的问候
菲利普
【问题讨论】:
-
Whit 崩溃了,是不是卡住了?
-
您不应该使用
w+而不是rw吗?或者r+....文件log_test.csv是否已经存在? -
嘿,不,它完全关闭了。它是 Win7 64bit 上的 Matlab 2015a
-
为什么对
fopen()的调用没有任何错误检查? -
@RobertStettler,非常感谢,好像已经这样了!