外部インタフェース/API リファレンス | ![]() ![]() |
C 言語表示
#include "matrix.h" int mxGetString(const mxArray *array_ptr, char *buf, int buflen);
引数
array_ptr
文字列のmxArray
のポインタ。つまり、クラスがmxCHAR_CLASS
であるmxArray
のポインタ。
buf
mxGetString
は、キャラクタデータをbuf
に書き出し、(Cの文字列の方法で)NULL
キャラクタを使って文字列を終了させます。buf
のポインタは、ダイナミックとスタティックメモリの両方に対応します。
buflen
buf
に読み込まれるキャラクタの最大数。一般的に、(array_ptr
のポインタが指す文字列mxArray
の要素数)+1にbuflen
を設定します。要素数の取得方法は、mxGetM
とmxGetN
のリファレンスページを参照してください。
注意
マルチバイトキャラクタセットのユーザは、MATLABはマルチバイトキャラクタをmxChar (16ビット符号なし整数)にパックすることを知っている必要があります。出力文字列に対する領域を割り当てるときに、打ち切りを避けるためにつぎのように設定してください。 buflen = (mxGetM(prhs[0] * mxGetN(prhs[0]) * sizeof(mxChar)) + 1
|
戻り値
成功した場合は0、失敗した場合は1。考えられる失敗の原因は、以下の通りです。
mxArray
を指定。array_ptr
によって指し示されるmxArray
全体を格納するために必要なキャラクタ数よりも小さいbuflen
を指定。この原因である場合、1が出力され、文字列は打ち切られます。詳細
mxGetString
を呼び出すことによって、文字列のmxArray
のキャラクタデータをCスタイルの文字列にコピーします。コピーされたCスタイルの文字列は、buf
から始まり、buflen-1
個より少ないキャラクタを含みます。Cスタイルの文字列は、常にNULL
キャラクタで終わります。
文字列配列が複数の行を含む場合は、一度に1列づつ、1つの長い文字列配列にコピーされます。
例題
examples
ディレクトリのrefbook
サブディレクトリのrevord.c
を参照してください。
さらに、examples
ディレクトリのmex
サブディレクトリのexplore.c
と、examples
ディレクトリのmx
サブディレクトリのmxmalloc.c
とmxsetallocfcns.c
を参照してください。
参考
mxCreateCharArray
, mxCreateCharMatrixFromStrings
, mxCreateString
![]() | mxGetScalar | mxIsCell | ![]() |