mxGetFieldNameByNumber (C および Fortran)
構造体配列からフィールド名へのポインター (フィールド番号を指定)
C 構文
#include "matrix.h" const char *mxGetFieldNameByNumber(const mxArray *pm, int fieldnumber);
Fortran 構文
#include "fintrf.h" character*(*) mxGetFieldNameByNumber(pm, fieldnumber) mwPointer pm integer*4 fieldnumber
引数
pm
構造体
mxArray
へのポインターfieldnumber
目的のフィールドの位置。たとえば C では、最初のフィールドの名前を取得するには、
fieldnumber
を 0 に設定します。2 番目のフィールドの名前を取得するには、fieldnumber
を 1 に設定します (以下同様)。Fortan では、最初のフィールドの名前を取得するには、fieldnumber
を1
に設定します。2 番目のフィールドの名前を取得するには、fieldnumber
を2
に設定します (以下同様)。
戻り値
成功した場合、n
番目のフィールド名へのポインター。失敗した場合は C では NULL
(Fortran では 0
) を返します。よくある失敗の原因には、以下があります。
構造体
mxArray
を指していない配列ポインターpm
を指定している。mxIsStruct
を呼び出して、pm
が構造体mxArray
を指しているかどうかを判断します。fieldnumber
の値を構造体mxArray
のフィールド数の範囲外で指定している。C では、fieldnumber
0 は最初のフィールドを表し、fieldnumber
N-1
は最後のフィールドを表します。ここで、N
は構造体mxArray
内のフィールドの数です。Fortran では、fieldnumber
1
は最初のフィールドを表し、fieldnumber
N
は最後のフィールドを表します。
説明
mxGetFieldNameByNumber
を呼び出して、任意の構造体 mxArray
内のフィールドの名前を取得します。mxGetFieldNameByNumber
の一般的な用途として、ループ内で呼び出して、任意の mxArray
内の全フィールドの名前を取得することがあげられます。
次のように初期化される MATLAB® 構造体を考えます。
patient.name = 'John Doe'; patient.billing = 127.00; patient.test = [79 75 73; 180 178 177.5; 220 210 205];
C では、フィールド番号 0
は name
フィールドを表し、フィールド番号 1
は billing
フィールドを表し、フィールド番号 2
は test
フィールドを表します。0
、1
、または 2
以外のフィールド番号を指定すると、mxGetFieldNameByNumber
は NULL
を返します。
Fortan では、フィールド番号 1
は name
フィールドを表し、フィールド番号 2
は billing
フィールドを表し、フィールド番号 3
は test
フィールドを表します。1
、2
、または 3
以外のフィールド番号を指定すると、mxGetFieldNameByNumber
は 0
を返します。
例
の次の例を参照してください。matlabroot
/extern/examples/refbook
の次の例を参照してください。matlabroot
/extern/examples/mx
の次の例を参照してください。matlabroot
/extern/examples/mex
参考
mxGetField
, mxGetFieldByNumber
, mxGetFieldNumber
, mxGetNumberOfFields
, mxIsStruct
, mxSetField
, mxSetFieldByNumber
バージョン履歴
R2006a より前に導入