注意:我已經重寫了原始問題以使其更清楚。C99中的柔性陣列
我有一個名爲
VcStatus readVcard(FILE *const vcf, Vcard **const cardp)
VCF是一個打開的文件,我會讀功能,cardp是指向卡陣列的開始。 一個文件將包含多張卡片。
readVCard一次讀取文件一行,並調用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)?