Trovo che valga la pena menzionare libConfuse qui e citarne la descrizione:
libConfuse è una libreria parser di file di configurazione, concessa in licenza secondo i termini della licenza ISC e scritta in C. Supporta sezioni e (elenchi di) valori (stringhe, interi, float, booleani o altre sezioni), oltre ad alcune altre funzionalità (come stringhe con virgolette singole/doppie, espansione di variabili di ambiente, funzioni e istruzioni di inclusione nidificate). Rende molto facile aggiungere capacità di file di configurazione a un programma utilizzando una semplice API.
L'obiettivo di libConfuse non è quello di essere la libreria di analisi dei file di configurazione con un miliardo di funzionalità. Invece, mira ad essere facile da usare e veloce da integrare con il tuo codice. libConfuse era chiamato libcfg prima, ma il suo nome è stato cambiato per non confondersi con altre librerie simili.
Sembra abbastanza simile al già citato libconfig. C'è un breve confronto tra i parser C e C++ in Uno studio delle librerie esistenti per leggere dai file di configurazione che potrebbe essere un utile inizio per chiunque scelga tra le alternative.
libconfig ma fa molto di più di quello che stai chiedendo