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

Posted 韩曙亮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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);
    

以上是关于C 语言文件操作 ( 配置文件读写 | 写出或更新配置文件 | 追加键值对数据 | 更新键值对数据 )的主要内容,如果未能解决你的问题,请参考以下文章

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

C 语言文件操作 ( 配置文件读写 | 写出或更新配置文件 | 逐行遍历文件文本数据 | 获取文件中的文本行 | 查询文本行数据 | 追加文件数据 | 使用占位符方式拼接字符串 )

C 语言文件操作 ( 配置文件读写 | 读取配置文件 | 函数接口形参 | 读取配置文件的逐行遍历操作 | 读取一行文本 | 查找字符 | 删除字符串前后空格 )

R语言系列之3-----文件读写

C 语言文件操作 ( 配置文件读写 | 框架搭建 | 主函数逻辑结构 | 启动无限循环 | 接收用户操作值 | 宏定义 | 显示操作菜单 )

C 语言文件操作 ( 配置文件读写 | 业务逻辑 | 接口设计 )