【C 语言】文件操作 ( 配置文件读写 | 写出或更新配置文件 | 逐行遍历文件文本数据 | 获取文件中的文本行 | 查询文本行数据 | 追加文件数据 | 使用占位符方式拼接字符串 )
文章目录
- 一、逐行遍历文件文本数据
- 1、获取文件中的文本行
- 2、查询文本行数据
- 3、追加文件数据
- 4、使用占位符方式拼接字符串
- 二、完整代码示例
一、逐行遍历文件文本数据
1、获取文件中的文本行
调用 fgets
方法 , 从文件中 , 获取一行数据 , 写出到指定的 数组 或 内存空间 中 ;
// 获取 fp 文件的一行数据 , 保存到 line_buffer 数组中 , 最多获取 MAX_LINE 字节p = fgets(line_buffer, MAX_LINE, fp);// 如果获取失败 , 则返回 NULL// 获取成功 , 返回的是 line_buffer 地址if (p == NULL){break;}
2、查询文本行数据
查询 本行字符数组中是否包含 键 Key ;
- 如果本行不包含 Key , 将数据行
line_buffer
, 追加拷贝到file_buffer
数组中 ; - 如果 Key 关键字 在本行 , 则使用新的数据替换原来的数据 , 最后拷贝到
file_buffer
中 ;
调用 strstr
函数 , 可以查询 字符串 中是否包含某个 子串 , 并返回 子串首地址 ;
// 查询 本行字符数组中是否包含 键 Keyp = strstr(line_buffer, key);
代码示例 :
// 查询 本行字符数组中是否包含 键 Keyp = strstr(line_buffer, key);// 本行不包含 Key , 将数据行 line_buffer// 追加拷贝到 file_buffer 数组中if (p == NULL){strcat(file_buffer, line_buffer);continue;}else {// 如果 Key 关键字 在本行 , 则使用新的数据替换原来的数据 , 最后拷贝到 file_buffer 中// 替换本行数据sprintf(line_buffer, "%s = %s\n", key, value);// 将替换的数据 , 追加拷贝到 file_buffer 数组中strcat(file_buffer, line_buffer);// 设置 Key 存在标志位key_exist = 1;}
3、追加文件数据
调用 strcat
函数 , 将 line_buffer
数据 , 追加到 file_buffer
中 ;
// 本行不包含 Key , 将数据行 line_buffer// 追加拷贝到 file_buffer 数组中if (p == NULL){strcat(file_buffer, line_buffer);continue;}
4、使用占位符方式拼接字符串
调用 sprintf
可以使用占位符方式拼接字符串 , 这里将键值对按照 "%s = %s\n"
形式 , 拼接成字符串 , 然后将拼接后的字符串追加到另外一个数组中 ;
// 替换本行数据sprintf(line_buffer, "%s = %s\n", key, value);// 将替换的数据 , 追加拷贝到 file_buffer 数组中strcat(file_buffer, line_buffer);
二、完整代码示例
完整代码示例 :
// 逐行遍历配置文件while (!feof(fp)){// 将 line_buffer 数据清空memset(line_buffer, 0, sizeof(line_buffer));// 获取 fp 文件的一行数据 , 保存到 line_buffer 数组中 , 最多获取 MAX_LINE 字节p = fgets(line_buffer, MAX_LINE, fp);// 如果获取失败 , 则返回 NULL// 获取成功 , 返回的是 line_buffer 地址if (p == NULL){break;}// 查询 本行字符数组中是否包含 键 Keyp = strstr(line_buffer, key);// 本行不包含 Key , 将数据行 line_buffer// 追加拷贝到 file_buffer 数组中if (p == NULL){strcat(file_buffer, line_buffer);continue;}else{// 如果 Key 关键字 在本行 , 则使用新的数据替换原来的数据 , 最后拷贝到 file_buffer 中// 替换本行数据sprintf(line_buffer, "%s = %s\n", key, value);// 将替换的数据 , 追加拷贝到 file_buffer 数组中strcat(file_buffer, line_buffer);// 设置 Key 存在标志位key_exist = 1;}}
【C 语言】文件操作 ( 配置文件读写 | 写出或更新配置文件 | 逐行遍历文件文本数据 | 获取文件中的文本行 | 查询文本行数据 | 追加文件数据 | 使用占位符方式拼接字符串 )相关推荐
- 【C 语言】文件操作 ( 配置文件读写 | 写出或更新配置文件 | 追加键值对数据 | 更新键值对数据 )
文章目录 一.追加键值对数据 二.更新键值对数据 三.完整代码示例 一.追加键值对数据 在上一篇博客 [C 语言]文件操作 ( 配置文件读写 | 写出或更新配置文件 | 逐行遍历文件文本数据 | 获取 ...
- 【C 语言】文件操作 ( 配置文件读写 | 写出或更新配置文件 | 函数形参设置 | 确保打开文件成功 | 统计文件大小 )
文章目录 一.函数形参设置 二.确保打开文件成功 三.统计文件大小 一.函数形参设置 函数形参设置 : 该函数的作用是 写出或更新配置项 , 遍历每行数据 , 检查 key 键 是否存在 , 如果存在 ...
- 【C 语言】文件操作 ( 配置文件读写 | 框架搭建 | 写出或更新配置文件 | 读取配置文件 )
文章目录 一.写出或更新配置文件 二.读取配置文件 一.写出或更新配置文件 写出或更新配置文件 : 首先 , 使用 字符数组 存储 键值对 信息 ; // 写出 或 更新 的配置项// 数组声明会后 ...
- 杂项题的基本解题思路——1、文件操作与隐写
1.文件操作与隐写 文件类型识别 文件类型(图片.压缩包.流量包.word.Excel.ppt,PDF-) 怎么知道是一张图片:后缀名是.jpg .png- a.File命令 (这边说到的命令或者是工 ...
- 使用EasyExcel进行文件的读取与写出(根据目录看更清晰)
EasyExcel简介 Java领域解析.生成Excel比较有名的框架有Apache poi.jxl等.但他们都存在一个严重的问题就是非常的耗内存.如果你的系统并发量不大的话可能还行,但是一旦并发上来 ...
- Python基本语法_文件操作_读写函数详解
目录 目录 软件环境 file文件对象 open文件操作 读文件 read读取所有文件内容 readline获取一行内容 readlines读取所有文件内容 readreadlinereadlines ...
- 文件操作:读写模式、操作模式、操作方法
文件操作 补充储备 1.with语法支持一次性打开多个文件,需要用逗号隔开eg:with open(r'a.txt','r',encoding='utf8') as f1 , open(r'b.txt ...
- golang 文件操作 创建 读写 复制移动 权限 删除
目录 介绍 基本操作 创建空文件 Truncate文件 得到文件信息 重命名和移动 删除文件 打开和关闭文件 检查文件是否存在 检查读写权限 改变权限.拥有者.时间戳 硬链接和软链接 读写 复制文件 ...
- PYTHON文件操作(读/写文件)
模板先行,介绍在后面 with open("ce.txt",encoding='utf-8') as file:# text = file.read()while True:#获取 ...
最新文章
- 拼手速抢红包!送大家现金红包!
- PHP中redis的使用
- 如何通过ActivationStart监控 Angular的路由激活事件
- 工作流实战篇_01_flowable 流程Demo案例
- TableAdapter和DataAdapter有何区别
- 浅谈5000万:外挂,代理与卡盟的故事。
- 算法设计与分析基础 (Anany Levitin 著)
- Linux最基础知识整理
- 关于数学建模(或科研论文)的画图学习建议
- Win11磁盘清理在哪打开?
- Updating Scoop 遇到问题
- 可汗学院公开课——统计学(1)——统计图
- EasyExcel ExcelGenerateException: The index of 'xx' and 'xx' must be inconsistent
- 不对外开放的微信小程序审核时不通过,因为无法提供测试账号导致审核人员登录失败解决办法!
- 基于javaweb+jsp的在线点餐系统(java+SSM+jsp+mysql+maven)
- 纪中DAY8做题小结
- 最近比较火的古风姓氏头像小程序源码
- 目前市面上量化交易软件、平台、框架的特点, 重点推荐VNPY底层仿真回测系统
- html入门基础-边框设计(入门级)
- 如何把小米和计算机共享,小米盒子局域网共享方法 Windows7系统共享图文教程