注:元の質問を書いて、はっきりさせるようにしました。C99でのフレキシブルアレイ
は、私は読みます開いているファイル
VcStatus readVcard(FILE *const vcf, Vcard **const cardp)
VCFであると呼ばれる機能を持っている、とcardpは、カードの配列の先頭へのポインタです。 ファイルには複数のカードが含まれます。
readVCardは、ファイルを一度に1行ずつ読み込み、関数parseVcPropを呼び出して、行内のキーワードを識別し、それらをストラクチャ内の適切な場所に割り当てます。ここで
は構造
typedef struct { // property (=contentline)
VcPname name; // property name
// storage for 0-2 parameters (NULL if not present)
char *partype; // TYPE=string
char *parval; // VALUE=string
char *value; // property value string
void *hook; // reserved for pointer to parsed data structure
} VcProp;
typedef struct { // single card
int nprops; // no. of properties
VcProp prop[]; // array of properties
} Vcard;
typedef struct { // vCard file
int ncards; // no. of cards in file
Vcard **cardp; // pointer to array of card pointers
} VcFile;
は、任意のプロパティの数を持つことができるものは、一枚のカードである
など、だから、ファイルが複数のカードが含まれている、カードに複数のプロパティが含まれています。あなたがそれらを読み終えるまで、どれくらいのものが知られていません。
これは私が理解できないものです。
parseVcPropを正しく使用するためにメモリをどのように割り当てる必要がありますか?
私がparseVcPropを呼び出すたびに、私は明らかに新しい構造体にデータを格納したいので、どうすればこのメモリを手前に割り当てることができますか?私はちょうどmalloc(sizeof(VcProp)* 1)ですか?