C 在变量中追加和存储数据
我想存储高达13 Kb的数据。我的应用程序将提供一些延迟(~10秒)的数据块,我需要将其存储在特定变量中。使用13000(uint8缓冲区[13000])的静态数组是不好的。这是我的密码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
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其边界将损坏堆栈。请参阅