我创建了一个如下所示的.ini文件:
[one]
heading=" available state";
name=['A', 'D', 'H'];
[two]
type= ["on", "off", "switch"];
访问此ini文件的主要C程序如下所示:
#include <stdio.h>
#include <Windows.h>
int main ()
{
LPCSTR ini = "C:\coinfiguration.ini";
char returnValue1[100];
char returnValue2[100];
GetPrivateProfileString("states", "title", 0, returnValue1, 100, ini);
GetPrivateProfileString("reaction", "reac_type", 0, returnValue2, 100, ini);
printf(returnValue2[10]);
printf("%s \n" ,returnValue1);
printf(returnValue2);
return 0;
}
我能够从第一节和整个数组名称显示整个标题。但不是像这样显示整个数组(名称)
['A', 'D', 'H'];
我只想显示“A&#39;”一词。 同样,对于第二节而不是这个
["on", "off", "switch"];
我只想透露&#34; on&#34;。 我无法想办法做到这一点。有人可以帮帮我吗?
答案 0 :(得分:2)
INI文件非常简单,没有类似于数组的东西,那么你必须自己拆分该字符串。
幸运的是,它很简单(让我假设我们可以省略 [和] ,因为它们没有为此示例添加任何内容):
char* buffer = strtok(returnValue1, ",");
for (int i=0; i <= itemIndex && NULL != buffer; ++i) {
buffer = strtok(NULL, ",");
while (NULL != buffer && ' ' == *buffer)
++buffer;
}
if (NULL != buffer) { // Not found?
printf("%s\n", buffer);
if (strcmp(buffer, "'A'") == 0)
printf("It's what I was looking for\n");
}
对于字符串修剪(bot为 [,空格和最终引号),您可以使用How do I trim leading/trailing whitespace in a standard way?中的代码。
(请注意代码未经测试)
答案 1 :(得分:1)