Получение переменной (строки) MATLAB из C - PullRequest
0 голосов
/ 22 апреля 2010

Я пишу небольшое приложение на C, которое запускает скрипт Matlab (файл .m). Мне нужно обменять некоторые переменные, и я не знаю, как получить массив символов, который существует в 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));

Это не работает. Кто-нибудь знает, как получить строку Matlab в C? Я прочитал документацию Matlab об engGetVariable () и приведенном примере, но все это проясняет меня.

1 Ответ

3 голосов
/ 22 апреля 2010

Ваша проблема в том, что вы пытаетесь запоминать память, которую вы никогда не выделяли.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);
...