glib读写ini文件测试

函数简介

g_key_file_load_from_file 

g_key_file_load_from_file() 是 GLib 库中的一个函数,用于从指定的文件路径加载一个键值对文件(通常是一个 .ini 风格的配置文件)。这个函数是 GKeyFile 结构体相关API的一部分,GKeyFile 用于解析和生成 .ini 风格的配置文件。

下面是 g_key_file_load_from_file() 函数的基本使用方法会体现在下面的ini文件的读写测试中。

g_key_file_set_string 

g_key_file_set_string() 是 GLib 库中的一个函数,用于在 GKeyFile 结构中设置一个字符串值。这个函数通常用于在内存中修改或创建键值对,然后可以将这些更改保存回文件。 

g_key_file_get_string() 是 GLib 库中的一个函数,用于从 GKeyFile 结构中获取指定节(section)和键(key)对应的字符串值。 

写一个ini文件

#include <glib.h>  
#include <stdio.h>  int ini_write(void) {  GKeyFile *key_file;  GError *error = NULL;  gboolean result;  // 创建一个 GKeyFile 实例  key_file = g_key_file_new();  // 设置一个键值对  g_key_file_set_string(key_file, "ExampleSection", "ExampleKey", "ExampleValue");  // 可以继续设置更多的键值对  g_key_file_set_string(key_file, "AnotherSection", "AnotherKey", "AnotherValue");  // 将更改保存到文件  result = g_key_file_save_to_file(key_file, "example.ini", &error);  if (!result) {  // 处理保存错误  fprintf(stderr, "Error saving key file: %s\n", error->message);  g_error_free(error);  return 1;  }  // 释放 GKeyFile 实例  g_key_file_free(key_file);  return 0;  
}

 调用函数ini_write后,会生成一个example.ini文件。内容如下所示:

[ExampleSection]
ExampleKey=ExampleValue[AnotherSection]
AnotherKey=AnotherValue

读ini文件测试

本函数读去上面ini_write函数的生成的文件example.ini中的值,代码如下:

#include <glib.h>  int ini_read(void) {  GKeyFile *key_file;  GError *error = NULL;  gboolean result;  // 创建一个 GKeyFile 实例  key_file = g_key_file_new();  // 从文件加载键值对  result = g_key_file_load_from_file(key_file, "example.ini", 0, &error);  if (!result) {  // 处理错误  g_print("Error loading key file: %s\n", error->message);  g_error_free(error);  return 1;  }  // 在这里,你可以使用 g_key_file_get_string()、g_key_file_get_integer() 等函数来访问键值对  // 例如:  char *value;value = g_key_file_get_string(key_file, "ExampleSection", "ExampleKey", &error);  if (value) {  g_print("Value: %s\n", value);  g_free(value); // 记得释放获取到的字符串  } else {  // 处理错误  g_print("Error getting key: %s\n", error->message);  g_error_free(error);  }  value = g_key_file_get_string(key_file, "AnotherSection", "AnotherKey", &error);  if (value) {  g_print("Value: %s\n", value);  g_free(value); // 记得释放获取到的字符串  } else {  // 处理错误  g_print("Error getting key: %s\n", error->message);  g_error_free(error);  }  // 释放 GKeyFile 实例和相关资源  g_key_file_free(key_file);  return 0;  
}

调用ini_read进行测试,在测试前,先执行ini_write函数生成文件example.ini,结果如下所示:

由结果可知,读取到了ini文件中的值。

小结

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

C++面向对象程序设计 - 重载运算符进一步讨论

函数重载就是对一个已有的函数赋予新的含义&#xff0c;使之实现新的功能。因此一个函数名就可以用来代表不同功能的函数&#xff0c;也就是一名多用。运算符也可以重载&#xff0c;即运算符重载&#xff08;operator overloading&#xff09;。 一、非成员、非友元的重载运算…

STM32F103学习笔记 | 1.Keil5详细安装教程

Keil5详细安装教程 https://www.keil.com/download/product/

使用API有效率地管理Dynadot域名,自查账户信息

关于Dynadot Dynadot是通过ICANN认证的域名注册商&#xff0c;自2002年成立以来&#xff0c;服务于全球108个国家和地区的客户&#xff0c;为数以万计的客户提供简洁&#xff0c;优惠&#xff0c;安全的域名注册以及管理服务。 Dynadot平台操作教程索引&#xff08;包括域名邮…

大型组织企业 怎么实现便捷高效的跨地区文件交换?

大型组织企业&#xff0c;尤其是银行、邮政、大型集团、跨国企业等&#xff0c;都会存在多个分支机构&#xff0c;会面临跨地区文件交换的场景和需求。 跨地区文件交换可能会遇到以下问题&#xff1a; 1、网络带宽限制&#xff1a;跨国或跨大陆传输时&#xff0c;网络带宽可能…

CC攻击频发,企业如何做好网络安全,该怎么防护能免遭CC攻击?

在当前网络现状下&#xff0c;随着信息技术的飞速发展&#xff0c;网络攻击手段也愈发多样化和复杂化。其中&#xff0c;CC攻击作为一种针对Web应用层的拒绝服务攻击&#xff0c;其危害日益凸显&#xff0c;对企业和个人造成了严重的威胁。下面我们就从多个角度详细分享关于CC攻…

LyricWikia, 一个让你玩物丧志的Python库

文章目录 LyricWikia: Python的歌词查找库背景LyricWikia是什么&#xff1f;安装简单的库函数使用方法场景示例搜索并显示歌词获取歌手的热门歌曲搜索并下载歌词 常见问题和解决方案总结 LyricWikia: Python的歌词查找库 背景 LyricWikia是一个用于查找和获取歌曲歌词的Python…

【项目实战】基于高并发服务器的搜索引擎

【项目实战】基于高并发服务器的搜索引擎 目录 【项目实战】基于高并发服务器的搜索引擎搜索引擎部分代码index.htmlindex.hpplog.hppparser.cc&#xff08;用于对网页的html文件切分且存储索引关系&#xff09;searcher.hpputil.hpphttp_server.cc&#xff08;用于启动服务器和…

【Linux的git操作】

Linux学习笔记---010 Linux的git操作1、什么是gitee2、git 准备工作2.1、查看是否安装了 git 版本工具2.2、安装 git 工具/更新成最新版本2.3、在gitee上创建远程仓库&#xff08;略&#xff09;2.4、提交file的初始化操作 3、git的“三板斧”3.1、add3.2、commit3.3、push3.4、…

Amazon云计算AWS之[2]弹性计算云EC2

文章目录 说明EC2基本架构Amazon机器映象&#xff08;AMI&#xff09;实例&#xff08;Instance&#xff09;弹性块存储&#xff08;EBS&#xff09; EC2关键技术地理区域和可用区域EC2通信机制弹性负载均衡监控服务自动缩放服务管理控制台 EC2安全及容错机制EC2弹性IP地址 说明…

Pyside6:多行按钮点击判断序号

在Pyside开发过程中会遇到这么个问题&#xff1a;当多个按钮在很多行中&#xff0c;需要在点击槽函数中确认按钮的行。 普通的按钮点击信号如下&#xff1a; clicked() 该信号并未有任何参数&#xff0c;无法得到有效的信息&#xff0c;那么如何完成点击哪个确定是哪个按钮呢…

计算机系列之校验码

6、校验码 1、码距 码距&#xff1a;就单个编码 A: 00 而言&#xff0c;其码距为 1&#xff0c;因为其只需要改变一位就变成另一个编码。**在两个编码中&#xff0c;从 A 码到 B 码转换所需要改变的位数成为码距&#xff0c;**如 A: 00 要转换为 B: 11&#xff0c;码距为2。一…

WIFI信号状态信息 CSI 特征提取篇之活动片段提取上(五)

在之前的数据处理环节中&#xff0c;用CSI Tool收集到的原始数据信号&#xff0c;经历了数据解析、降噪、插值的处理步骤&#xff0c;变成了干净、完整的信号片段&#xff0c;这是后续做更进一步分析的基础。 在开始阅读本篇博客前&#xff0c;需要说明两个重要的点&#xff1…

使用ClickHouse、Grafana和WarpStream规模化的解决可预测成本的日志留存

本文字数&#xff1a;13234&#xff1b;估计阅读时间&#xff1a;34 分钟 作者&#xff1a;Dale McDiarmid & Ryadh Dahimene 审校&#xff1a;庄晓东&#xff08;魏庄&#xff09; 本文在公众号【ClickHouseInc】首发 简介 在生产环境中操作任何复杂的技术堆栈而没有适当…

2024年低碳技术与污染控制技术国际学术会议(ICLCTPCT 2024)

2024年低碳技术与污染控制技术国际学术会议(ICLCTPCT 2024) 2024 International Conference on Low carbon technology and pollution control technology 一、【会议简介】 2024年低碳技术与污染控制技术国际学术会议&#xff0c;是交流科研成果的绝佳平台。 这次会议将汇集世…

如何利用美国站群服务器实现有效的SEO优化策略?

如何利用美国站群服务器实现有效的SEO优化策略? 在当今数字化时代&#xff0c;SEO优化对于网站的可见性和吸引力至关重要。站群服务器作为一种有效的SEO策略&#xff0c;可以通过多个相关联的网站在不同服务器上的部署&#xff0c;增强网站的权威性和链接多样性。尤其是在利用…

vector的使用(部分接口)

1.vector的使用 1.1vector的定义 (constructor)构造函数声明接口说明vector()无参构造vector (const vector& x)拷贝构造 1.2vector iterator 的使用 iterator的使用接口说明begin end获取第一个数据位置的iterator/const_iterator&#xff0c; 获取最后一个数据的下一个位…

【做算法学数据结构】二叉树的层序遍历【二叉树】

文章目录 题目二叉树二叉树描述二叉树的java描述和前序遍历、后序遍历、中序遍历 题解总结以及二叉树应用场景 题目 给你二叉树的根节点 root &#xff0c;返回其节点值 自底向上的层序遍历 。 &#xff08;即按从叶子节点所在层到根节点所在的层&#xff0c;逐层从左向右遍历…

力扣HOT100 - 98. 验证二叉搜索树

解题思路&#xff1a; class Solution {public boolean isValidBST(TreeNode root) {return recur(root,Long.MIN_VALUE,Long.MAX_VALUE);}public boolean recur(TreeNode root,long lower,long upper){if(rootnull) return true;if(root.val<lower||root.val>upper) re…

python爬虫之爬取携程景点评价(5)

一、景点部分评价爬取 【携程攻略】携程旅游攻略,自助游,自驾游,出游,自由行攻略指南 (ctrip.com) import requests from bs4 import BeautifulSoupif __name__ __main__:url https://m.ctrip.com/webapp/you/commentWeb/commentList?seo0&businessId22176&busines…

爬虫零基础学习,第一天,安装环境,requests库常用命令的讲解

Python爬虫 爬虫学习思路 URL内容获取&#xff0c;requests的基本常用语法 import requests # 先向目标网站发送请求 url "http://www.baidu.com" r requests.get(url) # 可以用看一下访问码返回值是不是200&#xff0c;若是200则表示访问成功 print(r.status_…