• linux开发板中的数据存储和读取操作


    问题:MQTT远程下发的参数存储在本地linux开发板,开发板依据该参数执行相应功能,当开发板重新上电时依然能继续执行该功能

    解决方式:

    在linux板中写一个标识并存储为文件,依据读取的文件标识执行相应的功能

    1)打开文件 r+方式

    1. aa = fopen("file_1.txt","r+");
    2. if(NULL ==fp)
    3. {
    4. printf("fail to open file")
    5. return 0;
    6. }

    fail to  open file 并报错segmentation fault

    2)打开文件 a+方式

    1. aa = fopen("file_1.txt","a+");
    2. if(NULL ==fp)
    3. {
    4. printf("fail to open file")
    5. return 0;
    6. }

    第一次会新建文件,不报错,但是写数据会在file_1.txt的文件末尾追加

    3)打开文件 w+方式

    1. aa = fopen("file_1.txt","w+");
    2. if(NULL ==fp)
    3. {
    4. printf("fail to open file")
    5. return 0;
    6. }

    第一次会新建文件,进行写覆盖操作,第二次打开file_1.txt文件里面的内容为零

    通过将文件指针回到首位置的方式不能解决文件内容被清零的问题

    4)联合使用r+和w+方式--解决

    1. aa = fopen("file_1.txt","r+");
    2. if(NULL ==fp)
    3. {
    4. printf("fail to open file")
    5. aa = fopen("file_1.txt","w+");
    6. }

    首先以读写的方式打开失败,进入写覆盖的操作(新建文件-只执行一次(当文件一直存在的情况下)),等下次再重启打开文件file_1.txt时是以r+的方式打开,因此里面的内容为上一次写的值(不会被清零)

    说明:

     r”:以只读方式打开,文件指针位于文件的开头。
    “r+”:以读和写的方式打开,文件指针位于文件的开头。
    “w”:以写的方式打开,不管原文件是否有内容都把原内容清空掉,文件指针位于文件的开
      头。
    “w+”:同上,不过当文件不存在时,前面的“w”模式会返回错误,而此处的“w+”则会
       创建新文件。
    “a”:以追加内容的方式打开,若文件不存在会创建新文件,文件指针位于文件的末尾。与
       “w+”的区别是它不会清空原文件的内容而是追加。
    “a+”:以读和追加的方式打开,其它同上。

  • 相关阅读:
    MATLAB算法实战应用案例精讲-【优化算法】A*算法
    Delphi、C# 和 TypeScript 之父 Anders Hejlsberg(安德斯·海尔斯伯格,海神)赶潮AI
    Vue模板语法的缩写是什么?
    MCUXpresso IDE下高度灵活的FreeMarker链接文件模板机制
    k8s之Helm
    Java开发从入门到精通(一):Kafka基础知识
    托管机构管理系统
    2. 【单链表】的基本概念 + 单链表的代码实现
    【Mac使用笔记】mac 设置开机自启动
    面试反问环节应该问什么?
  • 原文地址:https://blog.csdn.net/heda3/article/details/133779341