GKeyFile 是一个用于存储和检索按键值对

 Glibc 中的 GKeyFile 库
 GKeyFile 是一个用于存储和检索按键值对的文件格式,其中按键名称和值可以是任意字符串。在 GKeyFile 文件中,每个条目都由一行文本组成,其中键和值由等号(=)分隔。

以下是一个使用 `g_key_file_get_groups` 函数的示例:

#include <glib.h>
#include <glib/gkeyfile.h>int main(int argc, char *argv[]) {GKeyFile *key_file;GError *error = NULL;gchar **groups;gsize n_groups;/* 打开一个 GKeyFile 文件 */key_file = g_key_file_new();if (!g_key_file_load_from_file(key_file, "example.keyfile", G_KEY_FILE_NONE, &error)) {g_printerr("Failed to load key ***\n", error->message);return 1;}/* 获取所有组 */groups = g_key_file_get_groups(key_file, &n_groups);if (groups == NULL) {g_printerr("Failed to get groups from key file\n");return 1;}/* 打印组名 */for (gsize i = 0; i < n_groups; i++) {g_print("Group %d: %s\n", i, groups[i]);}/* 释放资源 */g_strfreev(groups);g_key_file_free(key_file);return 0;
}

在这个示例中,包含了所需的头文件,然后打开了一个名为 "example.keyfile" 的 GKeyFile 文件。接着,使用 `g_key_file_get_groups` 函数获取该文件中的所有组,并为每个组打印一条消息。最后,在结束前释放了分配的资源。

示例假设你已经有了一个名为 "example.keyfile" 的 GKeyFile 文件,其中包含一些组。
------------------------------------------

以下是一个使用 GKeyFile 来解析 INI 文件、查询、删除和修改键值对的示例:

#include <glib.h>
#include <glib/gkeyfile.h>void ini_parse(const gchar *filename) {GKeyFile *key_file;GError *error = NULL;/* 打开一个 INI 文件 */key_file = g_key_file_new();if (!g_key_file_load_from_file(key_file, filename, G_KEY_FILE_NONE, &error)) {g_printerr("Failed to load INI ***\n", error->message);return;}/* 查询键值对 */gchar *value = g_key_file_get_value(key_file, "section", "key", &error);if (value) {g_print("Value of key 'key' in section 'section': %s\n", value);g_free(value);} else {g_print("Key 'key' not found in section 'section'\n");}/* 删除键值对 */if (!g_key_file_remove_key(key_file, "section", "key", &error)) {g_printerr("Failed to remove key: %s\n", error->message);} else {g_print("Key 'key' removed from section 'section'\n");}/* 修改键值对 */if (!g_key_file_set_value(key_file, "section", "key", "new_value", &error)) {g_printerr("Failed to set new value: %s\n", error->message);} else {g_print("Key 'key' set to 'new_value' in section 'section'\n");}/* 保存修改 */if (!g_key_file_save_to_file(key_file, "output.ini", &error)) {g_printerr("Failed to save INI ***\n", error->message);} else {g_print("Modified INI file saved to 'output.ini'\n");}/* 释放资源 */g_key_file_free(key_file);
}int main(int argc, char *argv[]) {if (argc != 2) {g_printerr("Usage: %s <INI file>\n", argv[0]);return 1;}ini_parse(argv[1]);return 0;
}

在这个示例中,我们定义了一个 `ini_parse` 函数,它接受一个 INI 文件名作为参数。在函数内部,我们使用了一个 GKeyFile 对象来加载、查询、删除和修改键值对。修改完成后,将更新后的键值对保存到一个新的 INI 文件中。最后,我们在 main 函数中调用了这个函数,并传递一个 INI 文件名作为参数。

示例假设你已经有了一个名为 "example.ini" 的 INI 文件。在实际应用中,需要根据实际情况修改文件名。


-----------------------------------
更多例子参考下面的网址
https://blog.51cto.com/jeff1573/1665499

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/218236.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Java SSM框架实现沙县小吃门店连锁点餐订餐系统项目【项目源码+论文说明】

基于java的SSM框架实现县小吃门店连锁点餐订餐系统演示 摘要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 沙县小吃点餐系统&#xff0c;主要的模块包括实现管理员&#xff1b;个人中心、用户管…

WebSocket实现数据的实时推送

一、简介&#xff08;什么是WebSocket&#xff09; WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工&#xff08;full-duplex&#xff09;通信&#xff0c;即允许服务器主动发送信息给客户端。因此&#xff0c;在WebSocket中&#xff0c;浏览器和服务…

FastDDS 安装 foonathan_memory_vendor 找不到 not found

FastDDS 安装 foonathan_memory_vendor 找不到 cmake -v 3.23.2 git clone https://github.com/eProsima/foonathan_memory_vendor.git cd foonathan_memory_vendor mkdir build && cd build # cmake .. 编译不成功需要替换为如下&#xff1a; cmake -DCMAKE_INSTALL…

Linux 安装图形界面 “startx”

———————————————— 报错&#xff0c;如下&#xff1a; bash :startx command not found ———————————————— 解决方法&#xff1a; 1.先安装 — X Windows System&#xff0c;输入以下命令&#xff1a; yum groupinstall “X Window System”…

盘点2023年低代码平台TOP10

盘点2023年低代码平台TOP10 1 什么是低代码平台2 十大低代码平台2.1 IVX2.2 简道云2.3 伙伴云2.4 企名片one2.5 明道云2.6 轻流2.7 速融云2.8 轻舟——网易2.9 钉钉宜搭2.10 腾讯云-微搭 1 什么是低代码平台 低代码平台是一种开发软件的方法&#xff0c;它可以通过简单的拖放和…

【Anaconda】Ubuntu anaconda使用(新建环境、最小化安装Tensorflow)

Ubuntu anaconda使用&#xff08;新建环境、最小化安装Tensorflow&#xff09; 清华源地址&#xff1a; https://pypi.tuna.tsinghua.edu.cn/simplepip安装使用的时候&#xff0c; pip install xxx(库名) -i https://pypi.tuna.tsinghua.edu.cn/simple请先安装好anaconda&am…

Python 递归及目录遍历

递归调用&#xff1a;一个函数&#xff0c;调用了自身&#xff0c;称为递归调用 递归函数&#xff1a;一个会调用自身的函数 凡是循环能做的事&#xff0c;递归都能做。 目录 递归示例 普通方法实现 递归方式实现 计算分析&#xff1a; 递归遍历目录 引入os 遍历目录 执…

基于SSM的小儿肺炎知识管理系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

MobileNet网络

介绍 MobileNet 网络专注于移动端或者嵌入式设备中的轻量级CNN网络&#xff0c;相比传统卷积神经网络&#xff0c;在准确率小幅降低的前提下大大减少模型参数与运算量&#xff08;相比VGG16准确率减少了0.9%&#xff0c;但模型参数只有VGG的1/32&#xff09; 网络中的亮点&am…

Go 语言开发工具

Go 语言开发工具 VSCode VScode 安装教程参见&#xff1a;https://www.kxdang.com/topic//w3cnote/vscode-tutorial.html 然后我们打开 VSCode 的扩展&#xff08;CtrlShiftP&#xff09;&#xff1a; 搜索 go&#xff1a; 点击安装&#xff0c;安装完成后我们就可以使用代码…

利用知识付费小程序,我有才打造高效的知识传播渠道

在当今信息爆炸的时代&#xff0c;知识管理已经成为了每个人必须面对的问题。然而&#xff0c;市面上的知识付费平台大多数都是通用的&#xff0c;无法满足个性化需求。 因此&#xff0c;我有才提供了一款专属定制的适合个人的知识付费平台。核心产品能力如下&#xff1a; 一…

spingboot生产环境启动异常处理:Could not initialize ValueExtractorManager

今天在做将本地的springboot项目通过docker的方式部署到生产环境的工作时&#xff0c;发现docker下的jar包启动后包下面异常&#xff0c;经过网上调研&#xff0c;一开始都是说是包冲突之类的文章&#xff0c;尝试添加相关包未解决。后又遇到说是tomcat版本问题&#xff0c;觉得…

Java:TCP 通信方法(基本发送 + 接收)并 实现文件传输且反馈

TCP 通信编程 TCP:是一种可靠的网络协议&#xff0c;再通信两端都建立一个Socket对象。 通信之前要保证连接已经建立。 通过Socket产生IO流进行通信。 创建对象时&#xff0c;会连接服务器&#xff0c;连接不上&#xff0c;会报错。 所以&#xff0c;先运行服务端&#xff0c;再…

6大最佳目标进度管理软件盘点——团队/个人

在当今快节奏的生活和工作中&#xff0c;有效地管理目标和任务对于每个人来说都至关重要。在工作中&#xff0c;我们需要清晰地规划项目目标、安排任务和追踪进度&#xff1b;在生活中&#xff0c;我们也需要合理安排时间、记录重要事项以及追踪个人目标的实现进度。为了更好地…

【Maven技术专题】「知识盲区」教你如何使用深入分析Maven配置私服仓库的使用指南(基础篇)

Maven私服的使用实战 将内部构件部署到私服仓库什么是仓库和仓库组远程仓库的定义仓库定义基本结构仓库结构的属性介绍 部署部件到远程仓库远程仓库的认证用户名密码认证案例参考 私钥进行鉴权 镜像mirror镜像仓库的工作原理 将内部构件部署到私服仓库 如果想先学好什么如何将…

云原生周刊:Kubernetes v1.29 新特性一览 | 2023.12.11

开源项目推荐 kubedog Kubedog 是一个用于在 CI/CD 部署管道中监视和跟踪 Kubernetes 资源的库。 这个库被用于 werf CI/CD 工具中&#xff0c;在部署过程中跟踪资源。 RunWhen Local runwhen-local 是一个工具&#xff0c;用于在本地环境中运行 runwhen 脚本。runwhen 是…

vue面试题总结

Vuex和redux有什么区别&#xff1f;他们的共同思想是什么&#xff1f; Vuex 和 Redux 都是用于管理状态的状态管理库&#xff0c;它们在不同的前端框架中有着相似的思想&#xff0c;但也有一些关键的区别。 区别&#xff1a; 框架依赖&#xff1a; Vuex 是为 Vue.js 框架设计…

完爆MyBatis-Plus?来领略一下 MyBatis-Flex 的优雅魅力!

目录 一、Mybatis-Flex的有什么特点&#xff1f; 二、Mybatis-Flex和同类框架对比 2.1、功能对比 2.2、性能对比 三、Mybatis-Flex支持的数据库类型 四、Mybatis-Flex快速入门 Mybatis-Flex 是一个优雅的 Mybatis 增强框架&#xff0c;它非常轻量、同时拥有极高的性能与灵…

Golang WebView:打造跨平台的桌面应用

引言 随着互联网的发展和智能设备的普及&#xff0c;Web应用成为了主流的应用开发方式之一。然而&#xff0c;有些场景下仍然需要使用桌面应用来满足特定的需求。为了结合Web技术和桌面应用的优势&#xff0c;Golang提供了一种名为"WebView"的库&#xff0c;它可以帮…

AMEYA360:海康存储PCIe4.0固态硬盘A4000介绍

海康存储即将发布PCIe4.0固态硬盘新品A4000&#xff0c;搭载全新定制主控及高品质3D NAND闪存颗粒&#xff0c;最大顺序读取速度达7100MB/s&#xff0c;提供五年质保服务。 2022年&#xff0c;海康存储开始在PCIe 4.0固态硬盘领域全面发力&#xff0c;推出C4000 ECO、C4000等多…