0

Matlabスクリプト(.mファイル)を起動する小さなCアプリケーションを書いています。いくつかの変数を交換する必要がありますが、Matlabに存在するcharの配列を取得する方法がわかりません。

私はこのようなことをしています:

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 に答える