文章目录

  • 一、逐行遍历文件文本数据
    • 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 语言】文件操作 ( 配置文件读写 | 写出或更新配置文件 | 逐行遍历文件文本数据 | 获取文件中的文本行 | 查询文本行数据 | 追加文件数据 | 使用占位符方式拼接字符串 )相关推荐

  1. 【C 语言】文件操作 ( 配置文件读写 | 写出或更新配置文件 | 追加键值对数据 | 更新键值对数据 )

    文章目录 一.追加键值对数据 二.更新键值对数据 三.完整代码示例 一.追加键值对数据 在上一篇博客 [C 语言]文件操作 ( 配置文件读写 | 写出或更新配置文件 | 逐行遍历文件文本数据 | 获取 ...

  2. 【C 语言】文件操作 ( 配置文件读写 | 写出或更新配置文件 | 函数形参设置 | 确保打开文件成功 | 统计文件大小 )

    文章目录 一.函数形参设置 二.确保打开文件成功 三.统计文件大小 一.函数形参设置 函数形参设置 : 该函数的作用是 写出或更新配置项 , 遍历每行数据 , 检查 key 键 是否存在 , 如果存在 ...

  3. 【C 语言】文件操作 ( 配置文件读写 | 框架搭建 | 写出或更新配置文件 | 读取配置文件 )

    文章目录 一.写出或更新配置文件 二.读取配置文件 一.写出或更新配置文件 写出或更新配置文件 : 首先 , 使用 字符数组 存储 键值对 信息 ; // 写出 或 更新 的配置项// 数组声明会后 ...

  4. 杂项题的基本解题思路——1、文件操作与隐写

    1.文件操作与隐写 文件类型识别 文件类型(图片.压缩包.流量包.word.Excel.ppt,PDF-) 怎么知道是一张图片:后缀名是.jpg .png- a.File命令 (这边说到的命令或者是工 ...

  5. 使用EasyExcel进行文件的读取与写出(根据目录看更清晰)

    EasyExcel简介 Java领域解析.生成Excel比较有名的框架有Apache poi.jxl等.但他们都存在一个严重的问题就是非常的耗内存.如果你的系统并发量不大的话可能还行,但是一旦并发上来 ...

  6. Python基本语法_文件操作_读写函数详解

    目录 目录 软件环境 file文件对象 open文件操作 读文件 read读取所有文件内容 readline获取一行内容 readlines读取所有文件内容 readreadlinereadlines ...

  7. 文件操作:读写模式、操作模式、操作方法

    文件操作 补充储备 1.with语法支持一次性打开多个文件,需要用逗号隔开eg:with open(r'a.txt','r',encoding='utf8') as f1 , open(r'b.txt ...

  8. golang 文件操作 创建 读写 复制移动 权限 删除

    目录 介绍 基本操作 创建空文件 Truncate文件 得到文件信息 重命名和移动 删除文件 打开和关闭文件 检查文件是否存在 检查读写权限 改变权限.拥有者.时间戳 硬链接和软链接 读写 复制文件 ...

  9. PYTHON文件操作(读/写文件)

    模板先行,介绍在后面 with open("ce.txt",encoding='utf-8') as file:# text = file.read()while True:#获取 ...

最新文章

  1. 拼手速抢红包!送大家现金红包!
  2. PHP中redis的使用
  3. 如何通过ActivationStart监控 Angular的路由激活事件
  4. 工作流实战篇_01_flowable 流程Demo案例
  5. TableAdapter和DataAdapter有何区别
  6. 浅谈5000万:外挂,代理与卡盟的故事。
  7. 算法设计与分析基础 (Anany Levitin 著)
  8. Linux最基础知识整理
  9. 关于数学建模(或科研论文)的画图学习建议
  10. Win11磁盘清理在哪打开?
  11. Updating Scoop 遇到问题
  12. 可汗学院公开课——统计学(1)——统计图
  13. EasyExcel ExcelGenerateException: The index of 'xx' and 'xx' must be inconsistent
  14. 不对外开放的微信小程序审核时不通过,因为无法提供测试账号导致审核人员登录失败解决办法!
  15. 基于javaweb+jsp的在线点餐系统(java+SSM+jsp+mysql+maven)
  16. 纪中DAY8做题小结
  17. 最近比较火的古风姓氏头像小程序源码
  18. 目前市面上量化交易软件、平台、框架的特点, 重点推荐VNPY底层仿真回测系统
  19. html入门基础-边框设计(入门级)
  20. 如何把小米和计算机共享,小米盒子局域网共享方法 Windows7系统共享图文教程

热门文章

  1. JavaScript变量——栈内存or堆内存
  2. python binary lib on win/各种python库的二进制包
  3. textview的基本设置
  4. oracle-25031安装错误分析解决
  5. 【挑战极限】最短AJAX创建代码
  6. 黑马lavarel教程---3、数据库和视图注意点
  7. Luogu P1886 滑动窗口
  8. loadrunner 更新中......
  9. 《python3网络爬虫开发实战》--基本库的使用
  10. Redis学习(2)-redis安装