Я работаю над заданием, и мой профессор дал нам прототипы функций для всего, что мы должны использовать, а также определения структуры.
Целью программы является чтение файлов .vcf (vCard).
У нас есть функция readVcFile, которая вызывает readVcard, которая вызывает соответствующие функции для чтения каждой строки и ее анализа.
Вот соответствующие прототипы функций для моего вопроса:
VcStatus readVcFile( FILE *const vcf, VcFile *const filep );
VcStatus readVcard( FILE *const vcf, Vcard **const cardp );
VcStatus getUnfolded( FILE *const vcf, char **const buff );
Что мне трудно понять - это когда выделять память.
Из того, что я понимаю, большинство указателей должно быть способом возврата значения.
Например, я выяснил, что getUnfolded берет указатель на строку и использует этот указатель для заполнения строки теми символами, которые были в строке.
У меня больше проблем с readVcard.
Помните, что readVcFile вызывает readVcard, и в файле vcf может быть несколько vcards, поэтому он может вызывать несколько раз. Теперь мой вопрос, когда (и как) я должен Malloc vCard. Должен ли я malloc перед вызовом readVcard? И как мне получить доступ к этой vcard, когда я нахожусь в readVcard?
Это все очень запутанно, поэтому я ценю любые попытки прояснить для меня вещи.
Спасибо.
Редактировать: если это помогает, размер vcards может варьироваться, поэтому мне нужно использовать malloc.