C 在变量中追加和存储数据

C 在变量中追加和存储数据,c,C,我想存储高达13 Kb的数据。我的应用程序将提供一些延迟(~10秒)的数据块,我需要将其存储在特定变量中。使用13000(uint8缓冲区[13000])的静态数组是不好的。这是我的密码 uint8 buffer[13000]; void read_byte(uint16 Address) { uint8 data; uint8 append_byte; send_cmd(Address); //send command for read from address

我想存储高达13 Kb的数据。我的应用程序将提供一些延迟(~10秒)的数据块,我需要将其存储在特定变量中。使用13000(uint8缓冲区[13000])的静态数组是不好的。这是我的密码

uint8 buffer[13000];

void read_byte(uint16 Address)
{
    uint8 data;
    uint8 append_byte;

    send_cmd(Address);   //send command for read from address
    receive_byte(&data); // Read the data and store in data var
    check_append_byte(&append_byte); // check the byte from where need to append
    buffer[append_byte] = data; // store in buffer 
}

void file data()
{
    uint8 i;

    if(flag == 1)
    {
        for(i=0; i<8; i++)
        {
            read_byte(Address);
        }
    }
}
uint8缓冲区[13000];
无效读取字节(uint16地址)
{
uint8数据;
uint8追加_字节;
send_cmd(Address);//发送从地址读取的命令
receive_byte(&data);//读取数据并存储在数据变量中
check_append_byte(&append_byte);//检查需要追加的位置的字节
缓冲区[append_byte]=data;//存储在缓冲区中
}
无效文件数据()
{
uint8i;
如果(标志==1)
{

对于(i=0;i您需要使用链表格式而不是数组来保存数据并在运行时分配内存


您可以在这里找到一个很好的C语言链表教程,

您可以将缓冲区声明为
uint8*
,然后使用
malloc
进行分配,这样您的缓冲区就是堆分配的。当需要调整大小时,您可以使用
realloc
。在堆栈上存储缓冲区是不好的,因为它会耗尽堆栈,并且如果您写得太长e其边界将损坏堆栈。请参阅