长春高档网站建设,网站建设招聘网,网站建设 办公系统,建设网站宣传页下载地址#xff1a;GitHub - cktan/tomlc99: TOML C library
1.加载tomlc99库
只需要在工程当中添加toml.h / toml.c这两个文件就可以了
2.使用tomlc99库解析toml文件
以下是从文件中获取值的常用步骤#xff1a;
解析 TOML 文件。遍历并找到 TOML 中的表。从表中提取值…下载地址GitHub - cktan/tomlc99: TOML C library
1.加载tomlc99库
只需要在工程当中添加toml.h / toml.c这两个文件就可以了
2.使用tomlc99库解析toml文件
以下是从文件中获取值的常用步骤
解析 TOML 文件。遍历并找到 TOML 中的表。从表中提取值。释放分配的内存。
下面是解析示例表中的值的示例。
#include stdio.h
#include string.h
#include errno.h
#include stdlib.h
#include toml.hstatic void error(const char* msg, const char* msg1)
{fprintf(stderr, ERROR: %s%s\n, msg, msg1?msg1:);exit(1);
}int main()
{FILE* fp;char errbuf[200];// 1. Read and parse toml filefp fopen(sample.toml, r);if (!fp) {error(cannot open sample.toml - , strerror(errno));}toml_table_t* conf toml_parse_file(fp, errbuf, sizeof(errbuf));fclose(fp);if (!conf) {error(cannot parse - , errbuf);}// 2. Traverse to a table.toml_table_t* server toml_table_in(conf, server);if (!server) {error(missing [server], );}// 3. Extract valuestoml_datum_t host toml_string_in(server, host);if (!host.ok) {error(cannot read server.host, );}toml_array_t* portarray toml_array_in(server, port);if (!portarray) {error(cannot read server.port, );}printf(host: %s\n, host.u.s);printf(port: );for (int i 0; ; i) {toml_datum_t port toml_int_at(portarray, i);if (!port.ok) break;printf(%d , (int)port.u.i);}printf(\n);// 4. Free memoryfree(host.u.s);toml_free(conf);return 0;
}
3.访问表内容
TOML 表是使用字符串键进行查找的字典。在一般情况下表上的所有访问函数都命名为 toml_*_in(...)在正常情况下您知道密钥及其内容类型并且可以进行检索使用以下函数之一
toml_string_in(tab, key);
toml_bool_in(tab, key);
toml_int_in(tab, key);
toml_double_in(tab, key);
toml_timestamp_in(tab, key);
toml_table_in(tab, key);
toml_array_in(tab, key);
您还可以使用整数索引查询表中的键
toml_table_t* tab toml_parse_file(...);
for (int i 0; ; i) {const char* key toml_key_in(tab, i);if (!key) break;printf(key %d: %s\n, i, key);
}
4.访问阵列内容
可以使用整数索引对 TOML 数组进行去引用。通常数组上的所有访问方法都命名为 toml_*_at()要获取数组的大小请执行以下操作
int size toml_array_nelem(arr);
若要获取数组的内容请使用有效的索引并调用以下函数之一
toml_string_at(arr, idx);
toml_bool_at(arr, idx);
toml_int_at(arr, idx);
toml_double_at(arr, idx);
toml_timestamp_at(arr, idx);
toml_table_at(arr, idx);
toml_array_at(arr, idx);