По ходу разработки одного проекта написал несколько функций, которые позволяют удобно загружать/сохранять данные через libconfig'овские структуры.
https://github.com/zdo/libconfig_helper
Может, кому будет полезно.
Краткое описание:
умеет работать со «скалярными» типами (int, char*, float), массивами скаляров и массивами структур.
Все это в добавок обернуто в небольшую систему логирования. Так что, при возникновении ЛЮБОЙ ошибки в лог (struct hlog, see code) будет записано точное место ошибки с описанием и местом в иерархии (н-р, «exams[0].tests[1].questions[3].text: some error cause»).
Осталось забацать пару примеров. Сейчас они есть только как часть другого проекта - zexam.