我需要从 c 中的 .ini 中的值填充两个单独的结构。 .ini 文件看起来像
[NAMES]
john,01,email address
tom,02,email address
jane,03,email address
[SERVER]
server1,test.servername.com
server2,testother.server.com
然后需要填充的 typedef 结构将填充第一个表单 NAMES,然后填充来自 SERVER 的第二个表单
结构将是
typedef struct
{
char name;
int id;
char email;
} namesBuffer;
typedef struct
{
char server1;
char server2
} serverBuffer;
我需要用 c 语言对此进行编码,有人对如何做到这一点有任何建议/示例吗?我是否需要在 .ini 文件中搜索不同的部分名称[]并将每一行复制到适当的结构中。
最佳答案
只是快速搜索,我发现了一个简单的 C INI 解析器: https://github.com/benhoyt/inih
我对以逗号分隔的部分的建议是使用 strtok
,例如 http://www.gnu.org/savannah-checkouts/gnu/libc/manual/html_node/Finding-Tokens-in-a-String.html :
#include <string.h>
#include <stddef.h>
...
const char string[] = "jane,03,email address";
const char delimiters[] = ",";
char *cp;
cp = strdup(string); /* Make writable copy. */
str_name = strtok(cp, delimiters); // -> "jane"
str_nr = strtok(NULL, delimiters); // -> "03"
str_mail = strtok(NULL, delimiters); // -> "email address"
当然你必须先定义这三个字符串。 我不知道这是否是一个约定,但据我记得 ini-Files 应该看起来像这样:
[section]
variable1=a
variable2=b
但是当然您可以加载您想要的所有内容并解析它。对于部分名称,只需将分隔符设置为 "[]"
即可获取该部分的名称。
关于c - 从c中的ini文件填充两个单独的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45441966/