微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将可变长度数据存储在C中的可变长度表中

如何解决将可变长度数据存储在C中的可变长度表中

我必须存储如下所示的数据->

image

我希望像set_data(data_id,index,data)这样的界面将数据写入表中,而get_data(data_id,index)则需要从表中读取数据

我必须用C代码来实现。

需要一些逻辑上的帮助来编写代码

如何使用c中的结构来完成

想要实现这样的功能

struct INDEX
{
    U8 Len;
    U8 data[];
};

struct DATA_ID
{
    struct INDEX index[];
};

struct DATA_ID data_id[max];

data[]的长度因每个索引而异, index[]的长度因每个data_id而异

解决方法

对于动态内存分配,您需要使用 malloc

一个提示:每次您要初始化长度(大小)未知的数据类型时,最好使用 malloc 。唯一的其他解决方案是,使用足够大的数据类型来初始化未知数据类型,但这只会浪费内存,而且通常还会浪费性能。

https://www.tutorialspoint.com/c_standard_library/c_function_malloc.htm复制

#include <stdio.h>
#include <stdlib.h>

int main () {
   char *str;

   /* Initial memory allocation */
   str = (char *) malloc(15);
   strcpy(str,"tutorialspoint");
   printf("String = %s,Address = %u\n",str,str);

   /* Reallocating memory */
   str = (char *) realloc(str,25);
   strcat(str,".com");
   printf("String = %s,str);

   free(str);
   
   return(0);
}

输出:

String = tutorialspoint,Address = 355090448
String = tutorialspoint.com,Address = 355090448

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。