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

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

文章目录

一、追加键值对数据

二、更新键值对数据

三、完整代码示例





一、追加键值对数据


在上一篇博客 【C 语言】文件操作 ( 配置文件读写 | 写出或更新配置文件 | 逐行遍历文件文本数据 | 获取文件中的文本行 | 查询文本行数据 | 追加文件数据 | 使用占位符方式拼接字符串 ) 中 , 介绍了 逐行 遍历查询 文本文件中的键值对信息 ;


如果没有查找到 Key 关键字 , 则说明原来的配置文件中 , 没有改键值对信息 ;


此处将最新的键值对信息 追加进去即可 ;


使用 fprintf 函数 , 向文件中 , 追加新的键值对信息 ;


 

// 如果 Key 关键字不存在 , 直接将数据追加到文件末尾即可
    if (key_exist == 0)
    {
        fprintf(fp, "%s = %s\n", key, value);
    }






二、更新键值对数据


如果 Key 关键字存在 , 则需要重新写出该文件的数据 , 原来的数据直接删除覆盖 ;


这里的 更新键值对数据 , 是直接删除原来文件的所有信息 , 重新写入完整的文件信息 ;



首先 , 关闭之前的文件 ;


   

// 先关闭之前的 文件指针
        if (fp != NULL)
        {
            fclose(fp);
            fp = NULL;
        }


然后 , 重新打开文件 ;


   

// 重新打开文件
        fp = fopen(filename, "w+t");
        if (fp == NULL)
        {
            ret = -4;
            printf("fopen() err. \n");
            goto End;
        }


最后 , 将文件的完整数据 , 写出到 文件 中 ;


   

// 将文件的完整数据 , 写出到 fp 中
        // 注意此处的文件数据 , 没有原来的 键值对数据
        // 写入了要更新的键值对数据
        fputs(file_buffer, fp);
        // 也可以使用 fwrite 函数 , 向文件中写出数据
        //fwrite(filebuf, sizeof(char), strlen(filebuf), fp);



代码示例 :


 

else // 如果 Key 关键字存在 , 则需要重新写出该文件的数据 , 原来的数据直接删除覆盖
    {
        // 先关闭之前的 文件指针
        if (fp != NULL)
        {
            fclose(fp);
            fp = NULL;
        }
        // 重新打开文件
        fp = fopen(filename, "w+t");
        if (fp == NULL)
        {
            ret = -4;
            printf("fopen() err. \n");
            goto End;
        }
        // 将文件的完整数据 , 写出到 fp 中
        // 注意此处的文件数据 , 没有原来的 键值对数据
        // 写入了要更新的键值对数据
        fputs(file_buffer, fp);
        // 也可以使用 fwrite 函数 , 向文件中写出数据
        //fwrite(filebuf, sizeof(char), strlen(filebuf), fp);
    }





三、完整代码示例


完整代码示例 :


 

// 如果 Key 关键字不存在 , 直接将数据追加到文件末尾即可
    if (key_exist == 0)
    {
        fprintf(fp, "%s = %s\n", key, value);
    }
    else // 如果 Key 关键字存在 , 则需要重新写出该文件的数据 , 原来的数据直接删除覆盖
    {
        // 先关闭之前的 文件指针
        if (fp != NULL)
        {
            fclose(fp);
            fp = NULL;
        }
        // 重新打开文件
        fp = fopen(filename, "w+t");
        if (fp == NULL)
        {
            ret = -4;
            printf("fopen() err. \n");
            goto End;
        }
        // 将文件的完整数据 , 写出到 fp 中
        // 注意此处的文件数据 , 没有原来的 键值对数据
        // 写入了要更新的键值对数据
        fputs(file_buffer, fp);
        // 也可以使用 fwrite 函数 , 向文件中写出数据
        //fwrite(filebuf, sizeof(char), strlen(filebuf), fp);
    }


目录
相关文章
|
3天前
|
C语言
C语言——文件操作
C语言——文件操作
16 2
C语言——文件操作
|
1天前
|
存储 程序员 编译器
文件操作(C语言)
文件操作(C语言)
|
13天前
|
存储 C语言 C++
【C语言基础】:文件操作详解(前篇:准备知识)
【C语言基础】:文件操作详解(前篇:准备知识)
|
13天前
|
C语言
【C语言基础】:文件操作详解(后篇)-2
【C语言基础】:文件操作详解(后篇)
|
13天前
|
存储 C语言
【C语言基础】:文件操作详解(后篇)-1
【C语言基础】:文件操作详解(后篇)
|
2天前
|
存储 C语言
【c语言】详解文件操作(二)
【c语言】详解文件操作(二)
9 0
|
2天前
|
存储 程序员 编译器
【c语言】详解文件操作(一)
【c语言】详解文件操作(一)
4 0
|
3天前
|
C语言 Windows
【C语言】:文件读写相关函数介绍
【C语言】:文件读写相关函数介绍
9 0
|
6天前
|
存储 C语言
C语言----数据在内存中的存储(2)
C语言----数据在内存中的存储
12 0
|
6天前
|
存储 C语言
C语言----数据在内存中的存储(1)
C语言----数据在内存中的存储