如何读取 .ini 文件?

How to read from an .ini file?

我创建了一个名为 configuration.ini 的基本 .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 程序中 'states' 部分的标题,即

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

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

谁能告诉我该怎么做?

嗯,首先,不要#include .ini 文件。它不会想你想它做的事。 #include <fname>实际上是fname文件的内容添加到当前文件中,这不是你想要的。删除 #include.

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

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

假设您正在使用 Windows,您可以这样工作:

首先包括Windows.h

#include <Windows.h>

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

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

并调用 GetPrivateProfileString:

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