web-dev-qa-db-ja.com

LinuxのCでINIファイルを使用する

LinuxでCを使用する [〜#〜] ini [〜#〜] ファイルのような構成を読み取る標準的な方法はありますか?

私はLinuxベースのハンドヘルドに取り組んでおり、Cでコードを書いています。

そうでなければ、私は他の選択肢について知りたいです。

最終更新:

私はLibConfigを調査し、使用さえしました。しかし、フットプリントは高く、私の使い方は単純すぎます。そこで、フットプリントを削減するために、独自の実装を公開しました。実装はあまり一般的ではありませんが、実際には現在のところ完全に結合されています。設定ファイルは、アプリケーションの起動時に一度解析され、いくつかのグローバル変数に設定されます。

21
Kangkan

試す libconfig

次のような構造化された構成ファイルを処理するための単純なライブラリ: test.cfg 。このファイル形式は、XMLよりもコンパクトで読みやすくなっています。また、XMLとは異なり、型に対応しているため、アプリケーションコードで文字列解析を行う必要はありません。

Libconfigは非常にコンパクトです— expat XMLパーサーライブラリのサイズの数分の1です。これにより、ハンドヘルドデバイスなどのメモリに制約のあるシステムに適しています。

ライブラリには、C言語とC++言語の両方のバインディングが含まれています。 POSIX準拠のUNIXおよびUNIXライクなシステム(GNU/Linux、Mac OS X、Solaris、FreeBSD)、Android、およびWindows(2000、XP以降))で動作します...

14
shuvalov

いいえ、標準的な方法は1つではありません。申し訳ありませんが、それがおそらく最も正確な答えです:)

ただし、これを見ることができます Linux構成ファイルライブラリのリスト 。それは役に立つかもしれません。

11
gnud

4つのオプションがあります。

  1. Iniparser
  2. libini
  3. sdl-cfg
  4. RWini
10
Boris Guéry

(優れた、任意のCベースのアプリケーションで) glib を使用できる場合は、.iniスタイルのファイルに適した key-value file parser があります。もちろん、「無料」でglibのさまざまな(非常に素晴らしい)データ構造にアクセスすることもできます。

7
unwind

ccan にiniparserの更新されたフォークがあり、元の作者は何年にもわたってそれをあまり注目することができませんでした。免責事項-私はそれを維持します。

さらに、iniparserには、それ自体が非常に役立つ辞書が含まれています。

4
Tim Post

設定ファイルを読み取るためだけに高速で小さなコードが必要な場合は、 inih をお勧めします

設定ファイルのコンテンツを1回だけロードし、コンテンツを解析して、キーと値のペアごとにコールバック関数を呼び出します。

本当に小さい。組み込みシステムでも使用できます。

3
Bernardo Ramos

XMLを提案する上でまったく異なるものを提案するのは嫌ですが、libexpatはかなり最小限ですが、XMLを提案します。

私はあなたと同じ質問をしたのでこの結論に達しましたが、プロジェクトにはすでにlibexpatがリンクされていることに気づきました-おそらくそれだけを使用する必要があります。

2
David