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

文章讲述了在Linux开发板上使用MQTT接收远程下发的参数后,如何通过文件操作确保参数在重启后仍保持有效,重点介绍了不同文件打开模式(r,a+,w,w+)的应用和解决方法。

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

解决方式:

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

1)打开文件 r+方式

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

fail to  open file 并报错segmentation fault

2)打开文件 a+方式

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

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

3)打开文件 w+方式

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

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

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

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

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

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

说明:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

heda3

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值