0

我正在编写一个启动 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 文档和提供的示例,但其中任何一个都让我很清楚。

4

1 回答 1

3

您的问题是您试图将 memcpy 放入您从未分配过的内存中。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);
于 2010-04-22T11:46:14.303 回答