• ベストアンサー

INIファイルの読み書きをするには?

お世話になります。WindowsXP/Cで開発している初心者です。 開発はwindowsでしておりますが、最終的にはlinuxで動作させます。 質問させていただきたい件ですが INIファイルの読み込み、書き込みをするには、どういった方法(関数?)がありますでしょうか。 ネットで調べておりますが、見つけられずにいます。 windows.hをインクルードし、おなじみのGetPrivateProfileStringを実行すると windows上ではコンパイルが通りますが、linuxではヘッダーファイルが存在しないと エラーが出ます。(当たり前だと思いますが) ご存知の方、いらっしゃいましたら、ご指導願います。 宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • Trick--o--
  • ベストアンサー率20% (413/2034)
回答No.2

多分、標準Cには無いと思います。 いい機会ですから、ご自分でINI操作関数群を作ってみてはいかがでしょう。 文字列操作とファイル操作がメインですから、そこまで難しくはないと思います。

inaba502
質問者

お礼

回答有難うございます。 自分で作るしかなさそうですね(汗) 勉強にもなりますし、専用のCファイルを作ってみようと思います。 (作れるのか不安ではありますが)

その他の回答 (1)

  • MrBan
  • ベストアンサー率53% (331/615)
回答No.1

INI専用で、標準的なものはないので、 Cであればfopen,fgets等。 # もしくは、出来合いの独自ライブラリなどを探して評価→入手/購入。

inaba502
質問者

お礼

回答有難うございます。 そ、そうですか。標準的なものはないのですね^^; Cはそこまで甘くないのですね(笑)

関連するQ&A

  • INIファイルの読込みについて

    VB2005を使用しています。 INIファイルを読み込む関数で、GetPrivateProfileStringとGetPrivateProfileIntがありますが、この二つは文字列用、数値用と、なんとなく曖昧に憶えておりました。VBでINIファイルを読み込んだ場合、どちらも文字列、数値として取得できてしまうのですが、1つのプロジェクトでこれらを使い分ける意味はあるのでしょうか? できれば一つの関数で読込みを統一したいと思うので。。。 使い分ける意味があるとしたら、その理由についてもできれば教えてください。宜しくお願いいたします。

  • GetPrivateProfileStringでiniファイル読込む処理を詳しく知りたいのですが・・・

    お世話になっています。 iniファイルを読込み、各変数に代入するC言語のDLLを作成したいのです。 このサイトの投稿や、MSDNなどにも載っていたのですが、 少し理解に苦しみます。 現在まで、理解した点がwindows.hのインクルードを 記述するところ辺りです。 iniファイルは下記のようなレイアウトです。 ---<mst.ini>---------------------------- [user] name=username ID=userid [pc] pcname=FMV ---------------------------------------- #include<windows.h>は記述することまでは 分かりましたが、以下から進みません。。。 GetPrivateProfileString("") 初心者で申し訳ありませんが、お助け願います。

  • iniファイルに追記がしたいです。

     いつもお世話になっています。  iniファイルの中のあるデータをGetPrivateProfileStringで調べて、その中になければデータを  追記したいです。  WritePrivateProfileStringの場合、iniファイルにあるデータが追記したい内容がないだけで、他のデータが 入っていても、上書きされてしまうんですよね?  もしその中に他のデータが入っていた場合は、追記をしたいのですが、それができるAPI関数って  何かありますか?  iniファイルに関して、ネットで調べていると、WritePrivateProfileStringなどしか出てこなくて・・・。  もしできないようでしたら、追記できるような何かいいアイディアがあれば・・・と思っています。  すみませんが、よろしくお願いします。  わかりづらい文章で申し訳ありません。

  • INIファイルからのデータ読込みについて

    表題の実現方法について、どうしてもわからなかったので、質問を挙げさせていただきます。 会社から、INIファイルの内容を読み込んで、初期値設定に利用するように指示があり、実現方法がわからず、非常に困っています。 ライブラリを購入せずに、対応したいです。 どなたか、本内容にお詳しい方、ご教授下さい。 ◆開発環境 言語:C OS:Linux(Ubuntu 9.10) IDE:eclipse コンパイラ:gcc 4.4 ◆質問 1.セクションで区切られたIniファイルを読み込み、読み込んだデータを各種変数に格納したい。 《想定Iniファイル》 Test.ini [NETWORK] IPADDR=192.***.***.***.*** → char *IPADDRに格納したい PORT=****            → long PORTに格納したい [PRM1] Anum=***             → char *Anumに格納したい Bnum=***             → char *Bnumに格納したい Cnum=***             → char *Cnumに格納したい [PRM2] TIME1=**** TIME2=**** 2.上記1の処理を関数とし、main関数からコールして、mainプログラムの起動時にINIファイル内容を読み込みたい。

  • INIファイルへの保存について

    いつもお世話になります。 指定場所のINIファイルにウィンドウが閉じられた時の 座標位置を保存しようとしています。 API関数をMFCの中で用いたいのですが、現時点の知識量では 下記程度のソースしか思い浮かびません。 ネット上などいろいろ調べてみたのですが、 わからずじまいです。 ご教授よろしくお願い致します。 開発環境はVC++6.0MFCです。 CRect q; GetWindowRect(&q); WritePrivateProfileString("PROGRAMDATA", "WindowPlaceL", q.left,"INIファイルへのフルパス"); WritePrivateProfileString("PROGRAMDATA", "WindowPlaceT", q.top,"INIファイルへのフルパス");

  • windowsでLinuxで作成したソースをコンパイル

    Linuxで作成、 $gcc -Wall file.c で、通ったファイルをWindowsでも同様に通したいので、MinGWを使って、コンパイルしたのですが、 #include <sys/socket.h> の構文で引っかかってしまいました。どうやらインクルードファイルが無いようでしたので、 C:\MinGW\include C:\MinGW\lib 以下に、Linuxの /usr/include/ /usr/lib/ 以下のファイルをそのまま入れて、再度実行しました。 ヘッダーファイルは見つけて読んでくれたのですが、そのヘッダーファイルに書いてある関数(例:htons(), socket(), inet_addr(), connect())が参照できないとの事で、怒られてしまいます。 Linuxのライブラリファイルをそのまま入れたのがまずかったのかもしれないのですが、こいつのエラーを解消する有効手段が見つかりません。 問題解決のヒント、又は答えを教えていただけませんでしょうか。 どうか、お願い致します。

  • Linux C言語開発 インクルードについて

    C言語開発初心者です。 LinuxでC言語開発をするにあたり、どのディストリビューションにしても インクルードしたいヘッダファイルが既定の場所には無く別の場所にカーネルのバージョンごとに保存されているようなのです。 このままコンパイルを試みるとインクルードファイルが存在しませんとエラーが返ります。 既定のヘッダファイルの保存場所にはC言語開発に必要なヘッダファイルが存在しませんので、この問題を皆さんはどのように解決しておりますか?どなたかご教授お願いいたします。 C言語でincludeする場所は<>でくくった場合 /usr/include/ 以下を参照する設定になっていると思うのですが、 例えばmodule.h やinit.h などの開発用ヘッダファイル?を探してみると /usr/include/linux/ には存在せず、 find / -name module.h と入力して検索してみると /usr/src/kernels/2.6.32-131.21.1.el6.i686/include/linux/module.h と別な場所にあります。 ネットであれやこれや調べてみても コンパイル時にincludeの参照先を指定する方法はあるようなのですが、 コンパイルする度にいちいち指定するのは面倒だと思います。(gcc -I) かといって開発しているカレントディレクトリにヘッダファイルをコピーしても includeするヘッダファイルが別のヘッダファイルを参照することもあるようなので、 あまり現実的ではないようです。 一番安全な方法としてincludeする参照先が環境変数か何かで追加及び変更するのではないかと思います。 試してみましたがenvコマンドで表示されるOSの環境変数とは別のもののようなのです。 環境変数 C_INCLUDE_PATH とはどのようにして変更・追加するのでしょう? また、上記の方法以外で良い方法がございましたらそれでもかまいません。 よろしくお願いいたします。 開発環境 ・OS centos6 ・以下のパッケージはインストール済み kernel-headers-2.6.32-131.21.1.el6.i686 kernel-devel-2.6.32-131.21.1.el6.i686 make-3.81-19.el6.i686 gcc-4.4.5-6.el6.i686 ・GUI開発環境 netbeans ・uname -r 実行結果 2.6.32-131.21.1.el6.i686

  • Linux環境におけるgetprocs関数

    お疲れ様です、初めてLinux環境で開発(C言語)している者です。 流用元(HP-UX環境/C言語)のソースをコンパイルしたところ、 「getprocs」(プロセス情報の取得?)という関数でエラーになりました。 <procinfo.h>というヘッダをincludeしているのですが、 このヘッダファイルも見当たりません。 Linuxでは、使用できない関数なのでしょうか? また、代替手段などあるのでしょうか? getprocs自体、ネットで調査してもあまり有力な情報をヒットできず、苦慮してます。 ご存じの方おりましたら、ご教授よろしくお願いいたします。

  • eMbedded Visual C++で、.iniファイルは使えるのでしょうか?

    eMbedded Visual C++で、PDA上で動作するアプリを 開発しているのですが、.iniファイルは 使えるのでしょうか? WritePrivateProfileStringを使用しようとしたら "undeclared identifier" という、リンクエラーが出てしまいました。 なにか特別なヘッダファイルかライブラリをリンクする 必要があるのでしょうか?

  • ヘッダファイルの位置

    いままでLinux系やBSD系用に作っていた C言語のプログラムをSolaris10用に移植しているのですが、 似たようなヘッダファイルがあちこちにあって、 どこがどうなっているのかよくわからず・・・・ strtok_rという関数を使う箇所で、 コンパイルがうまく通らず、つまづいています。 manを見ると、string.hに入っていることになっているのですが、 /usr/sfw/include/string.h には入っておらず、 /usr/include/string.h には入っています。 おそらく、gccが、/usr/sfw/include/string.hのほうを見てしまうので、 #include <string.h> としても、strtok_rの宣言が読み込まれないのだとおもうのですが・・・ どのように解決したらよいものでしょうか??

専門家に質問してみよう