Creo que vale la pena mencionar libConfuse aquí y citar su descripción:
libConfuse es una biblioteca de análisis de archivos de configuración, con licencia según los términos de la licencia ISC y escrita en C. Admite secciones y (listas de) valores (cadenas, enteros, flotantes, booleanos u otras secciones), así como algunas otras características (como cadenas entre comillas simples/dobles, expansión de variables de entorno, funciones y declaraciones de inclusión anidadas). Hace que sea muy fácil agregar la capacidad de archivo de configuración a un programa usando una API simple.
El objetivo de libConfuse no es ser la biblioteca de análisis de archivos de configuración con un montón de funciones. En cambio, pretende ser fácil de usar y rápido de integrar con su código. libConfuse se llamaba libcfg antes, pero se cambió su nombre para no confundirse con otras bibliotecas similares.
Parece bastante similar al libconfig ya mencionado. Hay una breve comparación de los analizadores C y C++ en Un estudio de las bibliotecas existentes para leer desde los archivos de configuración que podría ser un comienzo útil para cualquiera que elija entre las alternativas.
libconfig pero hace bastante más de lo que estás pidiendo