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

简介: 【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*/)






二、确保打开文件成功


确保打开文件成功 : 这里确保文件打开 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;
    }


目录
相关文章
|
1天前
|
程序员 C语言 索引
【️C语言-游戏设置】---三子棋(N满)
【️C语言-游戏设置】---三子棋(N满)
|
1天前
|
C语言
️️【C语言-游戏设置】---猜数字游戏1~100
️️【C语言-游戏设置】---猜数字游戏1~100
|
3天前
|
Linux API C语言
C语言读写BMP文件-EasyBmp【 linux 平台】
**EasyBmp** 是一个49KB的轻量级C++图像处理库,专注于BMP格式,提供简单易用的API。它的特点是小巧、开源、易于理解和高度定制。通过示例代码展示了如何轻松读取、缩放和保存BMP图像。适合需要高效处理BMP图像的开发者。
|
3天前
|
存储 C语言
C语言进阶 文件操作知识(下)
C语言进阶 文件操作知识(下)
8 2
|
3天前
|
数据库 C语言
C语言进阶 文件操作知识(上)
C语言进阶 文件操作知识(上)
7 3
|
8天前
|
C语言
C语言进阶——sprintf与sscanf、文件的随机读写(fseek、ftell、rewind)
C语言进阶——sprintf与sscanf、文件的随机读写(fseek、ftell、rewind)
6 0
|
8天前
|
C语言
C语言进阶——文件的读写(文件使用方式、文件的顺序读写、常用函数、fprintf、fscanf)
C语言进阶——文件的读写(文件使用方式、文件的顺序读写、常用函数、fprintf、fscanf)
6 0
|
8天前
|
编译器 vr&ar 数据库
C语言进阶——文件的打开(为什么使用文件、什么是文件、文件的打开和关闭)
C语言进阶——文件的打开(为什么使用文件、什么是文件、文件的打开和关闭)
5 0
|
9天前
|
存储 C语言
C语言葵花宝典之——文件操作
C语言葵花宝典之——文件操作