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

举报
韩曙亮 发表于 2022/01/12 01:03:01 2022/01/12
【摘要】 文章目录 一、函数形参设置二、确保打开文件成功三、统计文件大小 一、函数形参设置 函数形参设置 : 该函数的作用是 写出或更新配置项 , 遍历每行数据 , 检查 ...





一、函数形参设置



函数形参设置 :

该函数的作用是 写出或更新配置项 , 遍历每行数据 , 检查 key 键 是否存在 ,

  • 如果存在 , 就更新对应的 value 值 ;
  • 如果不存在 , 在文件末尾添加该键值对信息 ;

传入 配置文件 名称 , 键值对 字符串 数据 即可 ;

下面的函数形参中的 int value_len /*in*/ 不是必须的 ;


代码示例 :

/**
 * @brief write_or_update_config_file 写出或更新配置项
 * 遍历每行数据 , 检查 key 键 是否存在
 * 如果存在 , 就更新对应的 value 值
 * 如果不存在 , 在文件末尾添加该键值对信息
 * 格式为 :
 * key = value
 *
 * @param filename 文件名称
 * @param key 键
 * @param value 值
 * @param value_len 值的长度
 * @return
 */
int write_or_update_config_file(char *filename /*in*/, char *key /*in*/, char * value/*in*/, int value_len /*in*/)

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15




二、确保打开文件成功



确保打开文件成功 : 这里确保文件打开 100 % 100\% 100% 成功 , 因为文件可能不存在 , 如果文件不存在 , 则需要创建该文件 ;


首先 , 先尝试打开文件 , 如果打开失败 , 提示错误 ;

    // 使用读写方式打开 filename 文件
    fp = fopen(filename, "r+");
    // 如果打开失败 提示失败信息
    if (fp == NULL)
    {
        ret = -2;
        printf("error : fopen \n");
    }

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

然后 , 使用 "w+t" 打开方式 , 打开文件 , 如果文件不存在 , 则会创建文件 , 如果本次再次打开文件失败 , 则直接退出 ;

    // 如果文件打开失败 , 说明没有文件
    if (fp == NULL)
    {
        // 以写的方式 , 打开文本文件 , 如果文件不存在 , 则创建文件
        fp = fopen(filename, "w+t");
        // 打开失败 , 直接退出
        if (fp == NULL)
        {
            ret = -3;
            printf("error : fopen \n");
            goto End;
        }
    }

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

代码示例 :

    // 使用读写方式打开 filename 文件
    fp = fopen(filename, "r+");
    // 如果打开失败 提示失败信息
    if (fp == NULL)
    {
        ret = -2;
        printf("error : fopen \n");
    }

    // 如果文件打开失败 , 说明没有文件
    if (fp == NULL)
    {
        // 以写的方式 , 打开文本文件 , 如果文件不存在 , 则创建文件
        fp = fopen(filename, "w+t");
        // 打开失败 , 直接退出
        if (fp == NULL)
        {
            ret = -3;
            printf("error : fopen \n");
            goto End;
        }
    }

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22




三、统计文件大小



统计文件大小 :

  • 首先 , 调用 fseek 函数 , 将文件指针移动到末尾 ;
    // 将文件指针移动到末尾
    fseek(fp, 0L, SEEK_END);

  
 
  • 1
  • 2
  • 然后 , 调用 ftell 函数 获取当前指针位置 , 当前指针位置就是文件大小 ;
    // 获取当前指针位置 , 当前指针位置就是文件大小
    file_length = ftell(fp);

  
 
  • 1
  • 2
  • 最后 , 调用 fseek 函数 , 将文件指针指向开始位置 ; 以便后续文件操作 , 不需要重新打开文件 ;
    // 将文件指针指向开始位置
    fseek(fp, 0L, SEEK_SET);

  
 
  • 1
  • 2

代码示例 :

    // 统计文件大小

    // 将文件指针移动到末尾
    fseek(fp, 0L, SEEK_END);

    // 获取当前指针位置 , 当前指针位置就是文件大小
    file_length = ftell(fp);

    // 将文件指针指向开始位置
    fseek(fp, 0L, SEEK_SET);

    // 文件大小不能超过 4K
    if (file_length > 1024 * 4)
    {
        ret = -3;
        printf("File Size More Than 4K\n");
        goto End;
    }

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

文章来源: hanshuliang.blog.csdn.net,作者:韩曙亮,版权归原作者所有,如需转载,请联系作者。

原文链接:hanshuliang.blog.csdn.net/article/details/121723073

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。