FATFS实现数据追加功能(原文不覆盖)

本文介绍如何使用FATFS文件系统正确地在现有文件中追加数据,避免覆盖原有内容。通过f_lseek函数定位到文件末尾进行续写,确保数据完整保留。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        在对FATFS的应用中我们经常需要把采集的数据存入的文件中,用作保存。也许我们的系统是一个长期的运行过程,但是我们的数据可能不是持续采集的,所以我们这样写代码

    /*注册一个工作区域*/
    f_mount(0,&fs);			   
    
    /* 打开创建一个新文件 */
    res=f_open(&fdst,"0:/DATA.CSV",FA_CREATE_NEW | FA_WRITE);  

    /* 写入标题数据 */
    res=f_write(&fdst,"年-月-日-时-分-秒,fix,track\n",29,&bw);

    /* 关闭文件 */
    f_close(&fdst);

     /* 数据转换 */
    size = format_data(text,324,12585);

     /* 打开文件 */
    res=f_open(&fdst,"0:/DATA.CSV",FA_OPEN_EXISTING | FA_WRITE);

    /* 写入数据 */
    res=f_write(&fdst,text,size,&bw);

    /* 关闭文件 */
f_close(&fdst);


但是我们实验之后发现没有达到我们想要的效果,之前的标题已经被覆盖了



那么如何实现呢,其实FATFS替我们考虑好了,只需要一个小函数f_lseek,,见代码


    /*注册一个工作区域*/
    f_mount(0,&fs);			   
    
    /* 打开创建一个新文件 */
    res=f_open(&fdst,"0:/DATA.CSV",FA_CREATE_NEW | FA_WRITE);  

    /* 写入标题数据 */
    res=f_write(&fdst,"年-月-日-时-分-秒,fix,track\n",29,&bw);

    /* 关闭文件 */
    f_close(&fdst);

     /* 数据转换 */
    size = format_data(text,324,12585);

     /* 打开文件 */
    res=f_open(&fdst,"0:/DATA.CSV",FA_OPEN_EXISTING | FA_WRITE);

    /* 查找文件的结尾 */
    res=f_lseek(&fdst,f_size(&fdst));

    /* 写入数据 */
    res=f_write(&fdst,text,size,&bw);


    /* 关闭文件 */
    f_close(&fdst);

此时我们下载程序在查看,发现成功了


关于f_lseek函数,我们做如下解释:

用于移动一个已打开文件的读写的指针,在代码中我们就是将写指针移到了文件的最后这样就实现饿了文件的续写功能!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值