本帖最后由 rindy 于 2017-9-2 11:53 编辑
假如有这样一个结构体数组,怎么存入flash呢,并且原样读写出来,之前只写过一些简单变量的存储与读写操作,不知道结构体怎么操作
struct User
{
char user_physical[20];
char user_custom[20];
char user_pa[20];
char user_flag;
};
struct User user1[60];//添加60条数据,现在要把这60条结构体数据存放到flash需要怎么操作?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
比如:struct User *user1 ;
u8 *p;
p=(U8*)user1;
在使用单字节写入时候 write_data(*p++); 这种写法是 把新的指针指向结构体的初始位置
然后按照u8类型进行存储。p++每次偏移一个字节。不过需要注意的是,你不能越界了,也就是循环写入的次数最多时sizeof(struct User);
读出来就好办了。先放到一个buff里面 然后再赋值到各个变量。
嗯嗯,就是再想问一下用你这种方式读出来的时候都存放到一个buf中,那怎么一次给结构体赋值呢,因为结构体各个成员变量都不一样有可能,包括长度什么的
感觉这个意思是不是就是把整个结构体数组看成一个大数组,写也是从开始地址一个字节一个字节的写到flash,读也是一个字节一个字节的读出来然后从开始地址一个个把读出来的放进去
2、专业解析是计算机内存存储原则,不管是什么变量、结构体(自定义的、C标准的。。。)等,使用时,本质是获取系统的一段内存(1字节、2字节、n字节等),然后操作内存内存放的内容,指针就表示这段内存的地址,理解这个了,指针也理解了。
这样的操作方式必须强制结构体单字节内存对齐,否则用一个char(uchar)类型的buff操作会导致数据不正确。
一周热门 更多>