从C获取MATLAB变量(字符串)

时间:2010-04-22 11:29:55

标签: c matlab matlab-engine

我正在编写一个启动Matlab脚本(.m文件)的小型C应用程序。 我需要交换一些变量,我不知道如何获得Matlab中存在的字符数组。

我正在做这样的事情:

enter code here
result = engGetVariable(ep,"X");
if (!result)
    {
    printf ("Error...");
            exit -1;
    }

int n = mxGetN(result);

    char *varx = NULL;
    memcpy(varx, mxGetData(result),n*sizeof(char));

它不起作用。有人知道如何在C中获取Matlab字符串吗? 我已经阅读了有关engGetVariable()和提供的示例的Matlab文档,但这些都澄清了我。

1 个答案:

答案 0 :(得分:3)

你的问题是你正试图记忆你从未分配过的内存。 char * varx = malloc(sizeof(char)* bytes_you_need);在你这样做之前。将char *设置为NULL意味着它没有内存地址,因此不能作为对任何内存的引用....将其设置为malloc的返回值,其中malloc为您的数据预留了一些字节。

char *varx = malloc (sizeof(char) * n);
memcpy(varx, mxGetData(result),n*sizeof(char));
printf ("%s\n", varx);
free(varx);