项目用EasyFlash存储环境变量,需要更新版本,添加新的存储项。
存储区域已经保存过之前版本的内容,仍然需要继续使用。更新的代码,要求添加一个新存储项。第一次读取新存储项时,需要使用默认值。
实测下来发现发现数值是错的,具体过程如下:
// 默认的环境变量添加新存储项
static const ef_env default_env_set[] = {
{"old_item", "77"}, // 旧版本的存储项,运行并存储过
{"new_item", "123"}, // 新添加的存储项,期望初始值是123
};
// 读取新存储项
char *str = strdup(ef_get_env("new_item")); // 希望的读取值是123,但实际上8
new_item_value = atol(str);
free(pStr);
得到的新存储项的默认值,不是期望的123,而是8。请问应该怎么纠正?
用printf输出来的字符串是”8x”,其中的x是不可打印店字符,转成整数后就变成8了。
感觉是EasyFlash找不到这一项时,读出一个乱码。
“123”是写在 default_env_set[]里面的,增加了一项 “new_item”。你看上面代码的第3行注释。
更新代码之前是没有”new_item”这一项的。
更新代码后,原本期望存储区域里找不到这一项时,自动载入 default_env_set 里的 “123”
@OGCB_4574 你读之前用于存放读取的buffer清零没有?这个“8x”可能是数组的随机数据。另外注意判断下读取接口的返回值,按理说找不到应该会有错误的返回值返回来。