Programmation.c : parser un fichier de config
Posté par Jean-Yves Beaujean (page perso, ) le 07 novembre 2006
Salut à tous,
Après plusieurs années passées à développer du Java, je dois repasser au C.
Je souhaiterais que mes programmes utilisent des fichiers de config
"clé-valeur". Exemple :
# Mon fichier de config
cle1=valeur1
cle2=valeur2
cle3=valeur3
...
En Java, je pouvais faire :
properties.load(new FileInputStream("maconfig.properties"));
C'est un peu l'équivalent que je souhaiterais faire en C.
getopt le permet-il ? Existe-t-il une librairie le permettant ?
Merci d'avance.
Jean-Yves.
Après plusieurs années passées à développer du Java, je dois repasser au C.
Je souhaiterais que mes programmes utilisent des fichiers de config
"clé-valeur". Exemple :
# Mon fichier de config
cle1=valeur1
cle2=valeur2
cle3=valeur3
...
En Java, je pouvais faire :
properties.load(new FileInputStream("maconfig.properties"));
C'est un peu l'équivalent que je souhaiterais faire en C.
getopt le permet-il ? Existe-t-il une librairie le permettant ?
Merci d'avance.
Jean-Yves.
> Lire le message (12 commentaires, moyenne: 2,5).
Vous avez demandé le commentaire #772160.



T'as du bol
Je l'utilisais justement aujourd'hui...
GKeyFile dans la glib le permet: http://developer.gnome.org/doc/API/2.0/glib/glib-Key-value-f(...)
Lis la section "description".
[^]Re: T'as du bol
Super.
Merci bcp !!
[^]Re: T'as du bol
un commentaire éventuellement hors sujet.
Je ne doute pas que le bout de glib fasse ça très bien, mais as-tu vraiment envie de te cogner une dépendance à la glib pour un pauvre parsing de fichier ?
si tu fais une appli gnome, je retire ce que j'ai dit :-)
[^]Re: T'as du bol
Non, ce n'est pas du tout hors sujet :-)
Effectivement, on peut se poser la question. C'est à lui de voir. Mais la Glib introduit beaucoup d'autres choses utiles (listes chainées, tableaux dynamiques, traitement de chaines de caractères, opérateurs d'allocation mémoire rapides - http://developer.gnome.org/doc/API/2.0/glib/glib-Memory-Slic(...) le tout portable sur un grand nombre de plateformes.
Voir la liste complète: http://developer.gnome.org/doc/API/2.0/glib/index.html
Résultat, si tu veux éviter des dépendances à plein de petites libs, c'est pas mal, et le code est plus uniforme et portable. L'API est très claire, donc facile à mémoriser, et orientée objet.
De plus, glib n'est pas indissociable de gtk: une appli gtk utilisera la glib, mais l'inverse n'est pas forcément vrai. Je code actuellement une application qui dépend de glib, mais comme elle n'est pas graphique je n'utilise pas gtk. Par contre, je ne passe pas mon temps à réinventer la roue.
[^]Re: T'as du bol
Ah, juste encore une chose: je vois en dessous libiniparser qui a l'air pas mal et sous license MIT (glib est LGPL). GKeyFile de la glib gère les listes de valeurs, du type:
Donc s'il préfère un truc léger et que le fait qu'il n'y ait pas de liste n'est pas bloquant, libiniparser a l'air cool, ou sinon je conseillerai glib, qui pourrait lui reservir par la suite.
[^]Re: T'as du bol
ça va pas.
- les properties java n'ont pas de notion de groupe ni de [localization]
- dans les properties java on peut mettre des commentaires n'importe où
- les properties java sont en ISO-8859-1 et peuvent contenir des caractères unicode sous forme \uXXXX
[^]Re: T'as du bol
et ? Il veut pas remplacer le comportement exact des properties, il veut juste faire à peu près la même chose en c...
[^]Re: T'as du bol
Oui, absolument ;-)
[^]Re: T'as du bol
argh ! ok, désolé :/