ПРИМЕЧАНИЕ. Я переписал исходный вопрос, чтобы сделать его более понятным.
У меня есть функция с именем
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)?