文章目录
一、函数形参设置
二、确保打开文件成功
三、统计文件大小
一、函数形参设置
函数形参设置 :
该函数的作用是 写出或更新配置项 , 遍历每行数据 , 检查 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*/)
二、确保打开文件成功
确保打开文件成功 : 这里确保文件打开 100 % 100\%100% 成功 , 因为文件可能不存在 , 如果文件不存在 , 则需要创建该文件 ;
首先 , 先尝试打开文件 , 如果打开失败 , 提示错误 ;
// 使用读写方式打开 filename 文件 fp = fopen(filename, "r+"); // 如果打开失败 提示失败信息 if (fp == NULL) { ret = -2; printf("error : fopen \n"); }
然后 , 使用 "w+t" 打开方式 , 打开文件 , 如果文件不存在 , 则会创建文件 , 如果本次再次打开文件失败 , 则直接退出 ;
// 如果文件打开失败 , 说明没有文件 if (fp == NULL) { // 以写的方式 , 打开文本文件 , 如果文件不存在 , 则创建文件 fp = fopen(filename, "w+t"); // 打开失败 , 直接退出 if (fp == NULL) { ret = -3; printf("error : fopen \n"); goto End; } }
代码示例 :
// 使用读写方式打开 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; } }
三、统计文件大小
统计文件大小 :
首先 , 调用 fseek 函数 , 将文件指针移动到末尾 ;
// 将文件指针移动到末尾 fseek(fp, 0L, SEEK_END);
然后 , 调用 ftell 函数 获取当前指针位置 , 当前指针位置就是文件大小 ;
// 获取当前指针位置 , 当前指针位置就是文件大小 file_length = ftell(fp);
最后 , 调用 fseek 函数 , 将文件指针指向开始位置 ; 以便后续文件操作 , 不需要重新打开文件 ;
// 将文件指针指向开始位置
// 将文件指针指向开始位置 fseek(fp, 0L, SEEK_SET);
代码示例 :
// 统计文件大小 // 将文件指针移动到末尾 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; }