c - 从c中的ini文件填充两个单独的结构

标签 c

我需要从 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/

相关文章:

c++ - 在我的程序中更改共享库中定义的变量不会从共享库中反射(reflect)出来

c - 如何在C中分隔二维数组中的行

c - 解析中间有 2 个操作数和 1 个运算符的简单数学方程

c - scanf ("%[^\n]",name) 的区别;和 scanf ("%[^\n]",名称);

c - float 减法精度差异

c - 将数字读入字符

c - 希望提高内联汇编的效率,有人可以提供建议吗?

c - AMESim 中二维数组的 malloc/free 问题

c - 缓冲区溢出时程序没有崩溃

c - 如何通过 C 中的地址来访问 char 数组中的数据?