如何从.ini文件中读取?

时间:2015-07-13 14:32:22

标签: c configuration ini

我创建了一个名为.ini的基本configuration.ini文件。该文件如下所示:

[Application]
no_of_applications= 4;

[states]

title = "Config File States available";
name = 'Active, Deactivated, Hot';

[reaction]
reac_type = ["switch_schedule", "activate_app", "disable_app";

现在我打算从我的C程序中读取这个.ini文件。我在我的C程序中包含了#include <configuration.ini>行。我只想阅读“状态”部分中的标题。在C程序中,即

#include<stdio.h>
#include<configuration.ini>

int main()
{
    //read the variable 'title' from 'states' and print it
    return 0;
}

有人可以告诉我该怎么做?

2 个答案:

答案 0 :(得分:4)

假设您使用的是Windows,则可以这样工作:

首先加入Windows.h

#include <Windows.h>

在你的功能上,创建一个LPCSTR(嘿!?真的吗?是的。)

LPCSTR ini = "C:\\config.ini";

并致电GetPrivateProfileString

char returnValue[100];
GetPrivateProfileString("states", "title", 0, returnValue, 100, ini);

答案 1 :(得分:3)

首先,请不要#include .ini个文件。它没有想到你的想法。 #include <fname>实际上将文件fname的内容添加到当前文件,这不是您想要的。删除#include

其次,无论是.ini还是别的,如果它有格式化的文本,您总是可以使用以下算法来读取文件。

  1. 定义一个足够长的缓冲区以容纳整个
  2. 使用fopen()打开文件。检查错误。
  3. 使用fgets()从文件中读取一行。检查是否成功。
  4. 将读取的行与您的部分值进行比较,例如"[states]"。您可能希望首先删除newline读取的fgets()尾随。
    • 如果匹配,请阅读下一行并继续执行步骤6.
    • 如果不匹配,请继续执行步骤3.
  5. 使用strtok()对输入进行标记。
  6. 根据预期的 head 值检查第一个令牌,例如title。您可以使用strcmp()
  7. 如果匹配,请将相同的输入字符串标记为获取下一个标记,这是您的预期值。