【C 语言】文件操作 ( 配置文件读写 | 写出或更新配置文件 | 函数形参设置 | 确保打开文件成功 | 统计文件大小 )
【摘要】
文章目录
一、函数形参设置二、确保打开文件成功三、统计文件大小
一、函数形参设置
函数形参设置 :
该函数的作用是 写出或更新配置项 , 遍历每行数据 , 检查 ...
一、函数形参设置
函数形参设置 :
该函数的作用是 写出或更新配置项 , 遍历每行数据 , 检查 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)