如何从一个.ini文件中读取?

问题描述 投票:2回答:2

我创建了一个称为.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;
}

谁能告诉我,我该怎么办呢?

c configuration ini
2个回答
4
投票

假设你使用的是Windows,则可以以这种方式工作:

首先包括Windows.h

#include <Windows.h>

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

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

并调用GetPrivateProfileString

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

3
投票

嗯,首先,不要#include.ini文件。它并不想你想象的那样。 #include <fname>实际上增加了文件fname到目前的文件,这是不是你想要的内容。取出#include

其次,无论是.ini或别的东西,只要是具有格式的文本,你总是可以使用下面的算法来读取文件。

  1. 定义一个缓冲区足够长,以容纳整条生产线。
  2. 使用fopen()打开文件。核对错误。
  3. 使用fgets()读取文件中的一行。检查成功。
  4. 比较你的区间值的读线,例如,"[states]"。你可能想摆脱由newline首先读取尾随fgets()的。
  5. 如果匹配,读取下一行,并继续到第6步。 如果不匹配,继续第3步。
  6. 使用strtok()令牌化的输入。
  7. 检查第一个令牌对你的期望的水头值,例如,title这里。您可以使用strcmp()
  8. 如果匹配,标记化同一输入字符串来获得下一个记号,这是你的期望值。
© www.soinside.com 2019 - 2024. All rights reserved.